Java FileOutputStream等待完成写入
我有很多byte[]片段要写入一个文件,这些片段有点大,我认为字节混合在一起了 有没有什么方法可以等待.write(字节[])完成他的工作,或者用其他方法来处理这个问题? 当我看文件时,前半部分是可以的,然后当我开始写下下半部分时,有时它会以前半部分结束。。。。字节数组很好,我测试过了。 如果您需要任何代码解释,请随时询问Java FileOutputStream等待完成写入,java,file,fileoutputstream,writing,Java,File,Fileoutputstream,Writing,我有很多byte[]片段要写入一个文件,这些片段有点大,我认为字节混合在一起了 有没有什么方法可以等待.write(字节[])完成他的工作,或者用其他方法来处理这个问题? 当我看文件时,前半部分是可以的,然后当我开始写下下半部分时,有时它会以前半部分结束。。。。字节数组很好,我测试过了。 如果您需要任何代码解释,请随时询问 try (FileOutputStream fos = new FileOutputStream(Main.newFile)) { for (int y =
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(FileOutputStream fos=newfileoutputstream(Main.newFile)){
对于(int y=0;y
好的,如果partecesont
是长的变量,则int y
变量可能溢出并开始写入数组的第一部分
如果不是这样,我在代码中没有看到其他可能导致您描述的错误。在这种情况下,一定有什么事情发生了
碎片,碎片,碎片,碎片
如果piecesCount
是long
变量,则int y
变量可能会溢出并开始写入数组的第一部分
如果不是这样,我在代码中没有看到其他可能导致您描述的错误。在这种情况下,一定有什么事情发生了
碎片,碎片,碎片,碎片
使用资源试用语句时不需要fos.close()好的,谢谢您的建议!我想你是说你怀疑对fos.write的调用不是按顺序进行的。请放心,他们是。你可以去掉这个fos.flush()
调用,它没有任何作用,只会减慢速度。我可以肯定地说,你不需要刷新输出流来确保写入字节的顺序性。嗯,flush实际上不会改变任何东西,只是可能会减慢速度,@VGR您是说fos.write()在他未完成工作时不可能被调用吗?当您使用try with Resources语句时,您不需要fos.close()好的,谢谢您的建议!我想你是说你怀疑对fos.write的调用不是按顺序进行的。请放心,他们是。你可以去掉这个fos.flush()
调用,它没有任何作用,只会减慢速度。我可以肯定地说,你不需要刷新输出流来确保写入字节的顺序性。嗯,flush实际上不会改变任何东西,只是可能会减慢速度,@VGR你是说fos.write()不可能在他未完成工作时被调用吗?不,piecesCount是整数,它永远不会超过1000,所以我认为他不能溢出o,piecesCount是整数,它永远不会超过1000,所以我认为他不能溢出