【发布时间】:2018-08-04 14:06:29
【问题描述】:
我正在尝试使用OutputStream 下载多个文件。我创建了一个 for 循环,遍历具有文件名的 Vector FileS 并下载它们。但只有第一个文件被下载。我的 Vector 在 0 处有 FileZero.xml 在 1 处有 FileOne.xml 并且只有 fileZero 被下载。请帮忙;这是我的代码
for (int x = 0; x < FileS.size(); x++) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
reportFile = rm.getClass().getResourceAsStream("/folder/" + FileS.elementAt(x));
try {
while ((nRead = reportFile.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
} catch (Exception e) {
e.printStackTrace();
}
buffer.flush();
byte[] byteArray = buffer.toByteArray();
try {
byte bytes[] = null;
bytes = byteArray;
response.setContentLength(bytes.length);
response.setContentType("application/force-download");
response.setHeader("Content-Disposition", "inline;filename=" + FileS.elementAt(x));
OutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
另外,我尝试注释掉 out.flush() 和 out.close();但没有帮助。我尝试将 OutputStream 对象放在循环之外只是为了测试也没有帮助。
【问题讨论】:
-
你没有得到任何异常吗?
-
没有例外。我在调试中运行了代码,它通常会通过每个步骤
标签: java outputstream fileoutputstream