我有必要在哪里将多个输入流写入Java中的临时文件。我有以下逻辑代码段。有没有更好的方法可以有效地做到这一点?
final String tempZipFileName = "log" + "_" + System.currentTimeMillis();
File tempFile = File.createTempFile(tempZipFileName, "zip");
final FileOutputStream oswriter = new FileOutputStream(tempFile);
for (final InputStream inputStream : readerSuppliers) {
byte[] buffer = new byte[102400];
int bytesRead = 0;
while ((bytesRead = inputStream.read(buffer)) > 0) {
oswriter.write(buffer, 0, bytesRead);
}
buffer = null;
oswriter.write(System.getProperty("line.separator").getBytes());
inputStream.close();
}
我有多个文件,大小从45到400 mb不等,对于典型的45 mb和360 mb的文件,此方法平均需要3分钟左右。可以进一步改善吗?
答案 0 :(得分:-1)
您可以尝试BufferedInputStream
@StephenC回答,在这种情况下,使用BufferedInputStream并不重要,因为缓冲区足够大。
我在计算机(带有SSD驱动器)上重现了该行为。我拿了一个100MB的文件。
我没有你那么长的执行时间。
问题可能出在您的readerSuppliers
上吗?