【发布时间】:2016-04-05 13:53:34
【问题描述】:
我有很多 byte[] 片段要写入文件,这些片段有点大,我认为字节混合在一起......
有什么方法可以等待 .write(byte[]) 完成他的工作或其他方法来处理这个问题吗? 当我看文件的前半部分是好的,然后当我开始写后半部分时,有一段时间它以前半部分结束......字节数组很好,我测试了它们。 如果您需要任何代码解释,请随时询问。
try (FileOutputStream fos = new FileOutputStream(Main.newFile)) {
for (int y = 0; y < piecesCount; y++) {
if (this.myList[y] == 1) {
fos.write(this.piecesArray.get(y).piece);
fos.flush();
System.out.println("Im writing " + y + " piece");
} else {
y--;
}
}
fos.close();
} catch (FileNotFoundException ex) {
} catch (IOException | InterruptedException ex) {
}
【问题讨论】:
-
使用try with resources语句时不需要fos.close()
-
好的,谢谢你的建议!
-
我认为您是在说您怀疑对
fos.write的调用不是按顺序发生的。放心,他们是。你可以摆脱那个fos.flush()电话,它除了减慢速度之外没有任何用处。 -
我可以肯定地说,你不需要刷新输出流来确保写入字节的顺序。
-
嗯,flush 并没有真正改变任何东西,只是可能会变慢,@VGR 你是说 fos.write() 在他没有完成他的任务时不可能被调用工作?
标签: java file fileoutputstream writing