加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:41:20 所属栏目:Java 来源:网络整理
导读:我真的很关心flush和close方法.在我的代码中,我总是关闭我的FileOutputStream对象.但是我想知道,如果我必须在这里使用flush方法,我可以在哪里使用它? 我会写一个项目,重复下载4或5个文件.我会写一个方法(用于下载文件),我的方法将循环并重复下载文件.我的方
我真的很关心flush和close方法.在我的代码中,我总是关闭我的FileOutputStream对象.但是我想知道,如果我必须在这里使用flush方法,我可以在哪里使用它?

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

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

try {
    InputStream inputStream = con.getInputStream();
    FileOutputStream outputStream = new FileOutputStream("C:programsTRYFILE.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 {
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读