我创建了一个java程序,它将URL中的文件逐部分下载到多个文件中,然后将这些文件中的字节读入完整下载的对象。它的工作原理是将要下载的文件部分分成线程。每次我的程序下载文件时,它都会获得所有字节,文件大小也是正确的,但有时图像会失真。其他时候图像是完美的。会导致这种情况的原因是什么?
各个线程用来下载文件部分的代码:
URL xyz = new URL(urlStr);
URLConnection connection= xyz.openConnection();
// set the download range
connection.setRequestProperty("Range", "bytes="+fileOffset+"-");
connection.setDoInput(true);
connection.setDoOutput(true);
// set input stream and output stream
in = new BufferedInputStream(connection.getInputStream());
fos = new FileOutputStream("part_"+this.partNumber);
out = new BufferedOutputStream(fos, this.downloadFileSize);
// create buffer to read bytes from file into
byte[] contentBytes = new byte[downloadFileSize];
// read contents into buffer
in.read(contentBytes, 0, this.downloadFileSize);
out.write(contentBytes, 0, this.downloadFileSize);
将文件放在一起的代码:
int partSize=0;
//Create output stream
OutputStream saveAs = new FileOutputStream(fileName);
for(int i=0; i<filePieces;i++)
{
File file=new File("part_"+(i+1));
partSize=(int)file.length();
byte fileBuffer[]=new byte [partSize];
//Create input stream
InputStream is = new FileInputStream(file);
is.read(fileBuffer);
saveAs.write(fileBuffer);
is.close();
}
答案 0 :(得分:2)
如果没有进一步的细节和示例代码,您就会强制要求任何答案。这是我的:
java.util.concurrent
解决方案支持synchronized
包中的课程。