import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
public class FileDownload {
public void downLoad(String urlAddress, String filepath,int buffer) throws IOException, ParseException, NoSuchAlgorithmException{
// String tempFileName = filepath + ".temp";//临时文件名
long lenPos = 41943040;
URL url = new URL(urlAddress);
HttpURLConnection httpUrl = (HttpURLConnection) url.openConnection();
// httpUrl.setRequestProperty("User-Agent","NetFox");
httpUrl.setRequestProperty("Range","bytes=" + lenPos +"-");
httpUrl.connect();
int fileSize = httpUrl.getContentLength();
System.out.println("文件大小:" + fileSize);
int copyFileSize = 0;
// File tempFile = new File(tempFileName);
File targetFile = new File(filepath);
InputStream input = httpUrl.getInputStream();
BufferedInputStream bis = new BufferedInputStream(input);
/*byte[] buf = new byte[buffer];
int len = 0;
FileOutputStream fos = new FileOutputStream(targetFile);
while ((len = bis.read(buf)) != -1) {
fos.write(buf, 0, len);
copyFileSize = copyFileSize + len;
}
fos.close();
bis.close();*/
RandomAccessFile oSavedFile = new RandomAccessFile(targetFile,"rw");
// 定位文件指针到 nPos 位置
oSavedFile.seek(lenPos);
byte[] b = new byte[buffer];
int nRead;
// 从输入流中读入字节流,然后写到文件中
while((nRead=bis.read(b,0,buffer)) > 0)
// while((nRead=bis.read(b,0,buffer)) > 0 && copyFileSize < 41943040)
{
oSavedFile.write(b,0,nRead);
copyFileSize = copyFileSize + nRead;
}
bis.close();
input.close();
httpUrl.disconnect();
// if(targetFile.exists()){
// targetFile.delete();
// }
// tempFile.renameTo(targetFile);//更改文件名
System.out.println("复制的大小:" + copyFileSize);
System.out.println("MD5:" + MD5Util.getFileMD5String(targetFile));
}
}
断点续传,客户端
最新推荐文章于 2023-07-07 14:10:22 发布