0

我遵循这个例子:http ://www.mkyong.com/java/how-to-download-file-from-website-java-jsp

File file = new File("path/to/file/test.txt");
FileInputStream fis= new FileInputStream(file);
ServletOutputStream out = response.getOutputStream();

byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(fis.read(outputByte, 0, 4096) != -1)
{
    out.write(outputByte, 0, 4096);
}
fis.close();
out.flush();
out.close();

问题是下载文件仍然不完整。在文件末尾仍然缺少一些字符

所以我尝试另一个例子:

File file = new File("path/to/file/test.txt");
FileInputStream fis= new FileInputStream(file);


IOUtils.copy(fis,response.getOutputStream());
fis.close();

下载文件完成。所以我的问题是为什么第一个例子不起作用而第二个例子是正确的

4

2 回答 2

1

返回的值InputStream.read()很重要,使用它!

于 2013-02-18T23:58:36.993 回答
1

不确定这是否是原因,但你可以更换这个

//copy binary contect to output stream
while(fis.read(outputByte, 0, 4096) != -1)
{
    out.write(outputByte, 0, 4096);
}

int length=-1;
while ( (length = fis.read(outputByte, 0, 4096)) != -1) {
    out.write(outputByte, 0, length);
}

让我们知道进展如何?

于 2013-02-19T00:00:10.407 回答