gpt4 book ai didi

java 程序下载文件已损坏。为什么?

转载 作者:行者123 更新时间:2023-12-02 07:58:06 25 4
gpt4 key购买 nike

我创建了一个 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();
}

最佳答案

如果没有更多详细信息和示例代码,您将被迫猜测任何答案。这是我的:

  • 当您应该使用输入/输出流时,您正在使用读取器和写入器。
  • 您不知何故弄乱了同步。优先使用 java.util.concurrent 包中的类,而不是自行开发的synchronized 解决方案。

关于java 程序下载文件已损坏。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com