java – FileOutputStream:“close”方法是否也调用“flush”?

前端之家收集整理的这篇文章主要介绍了java – FileOutputStream:“close”方法是否也调用“flush”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我真的很关心flush和close方法.在我的代码中,我总是关闭我的FileOutputStream对象.但是我想知道,如果我必须在这里使用flush方法,我可以在哪里使用它?

我会写一个项目,重复下载4或5个文件.我会写一个方法(用于下载文件),我的方法将循环并重复下载文件.我的方法将有一个这样的代码.

close方法调用flush,还是在关闭之前必须使用flush?

try {
    InputStream inputStream = con.getInputStream();
    FileOutputStream outputStream = new FileOutputStream("C:\\programs\\TRYFILE.csv");

    int bytesRead = -1;
    byte[] buffer = new byte[4096];
    while ((bytesRead = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer,bytesRead);
}

} catch(Exception e) {
    //
} finally {
    outputStream.close();
    inputStream.close();
}

请注意,代码工作正常:它成功下载文件.但我不知道使用冲洗.

解决方法

flush方法用于“刷新”保存在缓冲区中的字节. FileOutputStream不使用任何缓冲区,因此flush方法为空.拨打电话不会改变你的代码的结果.

使用缓冲写入器,该方法close调用显式刷新.

所以当你喜欢在关闭数据流之前写入数据,并且在缓冲区已满之前(当缓冲区已满时,写入程序开始写入而不等待刷新调用),你需要调用flush.

FileOutputStream类的源代码没有方法flush的自定义版本.所以使用的flush方法是其超级类OutputStream的版本. OutputStream中的flush的代码如下

public void flush() throws IOException {
}

当你看到这是一个空的方法什么都不做,所以调用它是不一样的.

猜你在找的Java相关文章