java - FileOutputStream 等待写入完成

标签 java file fileoutputstream

我有很多 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) {
    }

最佳答案

好吧,如果 piecesCount 是一个 long,则 int y 变量可能会溢出并开始写入数组的第一部分。

如果情况并非如此,我在这段代码中没有看到可能导致您所描述的情况的其他错误。在这种情况下,一定有什么事情发生

piecesArray.get(y).piece

关于java - FileOutputStream 等待写入完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428394/

相关文章:

java - 在 S3 上覆盖数据帧时 Spark 抛出 FileNotFoundException

java - 如何从 aws elastic beanstalk 环境中获取堆转储

c - (struct _IO_FILE *)->_IO_read_base 如何设置?

java - 以二进制格式保存数组

java - 如何将多个视频文件一起写入以创建一个视频文件

java - Spring 启动 : How can I perform an integration test with real dependencies?

java.lang.NoSuchMethodException : Bean has no property named

file - UWP : Catch error when reading file

java - 如何将创建的文件保存到同一项目目录? java

java - 直接从网络流(http)播放媒体(视频)