我有一个Servlet,可将文件下载到请求的客户端。现在,当用户请求下载xml文件时。它将开始下载,完成后,文件看起来不完整。文件末尾缺少一些数据。
我的代码如下:
File file = new File(location);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename=" + fileName);
FileInputStream fileIn = new FileInputStream(file);
OutputStream out = response.getOutputStream();
byte[] outputByte = new byte[4096];
int length = -1;
//copy binary contect to output stream
while((length = fileIn.read(outputByte)) > 0)
{
out.write(outputByte);
}
fileIn.close();
out.flush();
out.close();
我的代码在哪里无法下载完整的xml文件?
最佳答案
像这样更改while循环。缓冲区大小为4096。您应仅使用在先前的read()中读取的长度。
//copy binary contect to output stream
while((length = fileIn.read(outputByte)) > 0)
{
fileOut.write(outputByte, 0, length);
}
但是,您应该为此使用Guava ByteStreams。您可以找到其他支持此功能的库。