Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FileOutputStream等待完成写入_Java_File_Fileoutputstream_Writing - Fatal编程技术网

Java FileOutputStream等待完成写入

Java FileOutputStream等待完成写入,java,file,fileoutputstream,writing,Java,File,Fileoutputstream,Writing,我有很多byte[]片段要写入一个文件,这些片段有点大,我认为字节混合在一起了 有没有什么方法可以等待.write(字节[])完成他的工作,或者用其他方法来处理这个问题? 当我看文件时,前半部分是可以的,然后当我开始写下下半部分时,有时它会以前半部分结束。。。。字节数组很好,我测试过了。 如果您需要任何代码解释,请随时询问 try (FileOutputStream fos = new FileOutputStream(Main.newFile)) { for (int y =

我有很多byte[]片段要写入一个文件,这些片段有点大,我认为字节混合在一起了

有没有什么方法可以等待.write(字节[])完成他的工作,或者用其他方法来处理这个问题? 当我看文件时,前半部分是可以的,然后当我开始写下下半部分时,有时它会以前半部分结束。。。。字节数组很好,我测试过了。 如果您需要任何代码解释,请随时询问

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,所以我认为他不能溢出