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 { } 当你看到这是一个空的方法什么都不做,所以调用它是不一样的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |