package com.basic.week3.download.impl;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.URLConnection;
import com.basic.week3.download.api.Connection;
import com.basic.week3.download.api.ConnectionException;
import com.basic.week3.download.api.ConnectionManager;
public class ConnectionImpl implements Connection{
private static final String PATH="E://";
private URLConnection urlConnection;
private InputStream input;
private String fileName;
ConnectionImpl(URLConnection urlConnection,String fileName){
this.urlConnection=urlConnection;
this.fileName=fileName;
}
@Override
public byte[] read(int startPos, int endPos) throws IOException {
byte [] buffer=new byte [1024];
input=urlConnection.getInputStream();
RandomAccessFile raFile=new RandomAccessFile(creatLocalFile().toString(),"rw");
//读取次数
int times=(int)((endPos-startPos-1)/1024);
input.skip(startPos);
raFile.seek(startPos);
for(int i=times;i<=times;i++){
int flag=input.read(buffer);
raFile.write(buffer,0,buffer.length);
if(flag<0){
break;
}
}
return buffer;
}
@Override
public int getContentLength() {
return urlConnection.getContentLength();
}
@Override
public void close() {
try {
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private File creatLocalFile(){
File file=new File(PATH+fileName);
return file;
}
}