jav*_*r35 19 java io fileoutputstream
我对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, 0, bytesRead);
}
} catch(Exception e) {
//
} finally {
outputStream.close();
inputStream.close();
}
Run Code Online (Sandbox Code Playgroud)
请注意,代码运行良好:它成功下载文件.但我不确定使用flush.
Dav*_*INO 30
该方法flush用于"刷新"保留在缓冲区中的字节.FileOutputStream不使用任何缓冲区,因此flush方法为空.调用与否不会改变代码的结果.
使用缓冲编写器,方法close显式调用flush.
因此,当您想要在关闭流之前和缓冲区已满之前写入数据时需要调用flush (当缓冲区已满时,编写器开始写入而不等待刷新调用).
类的源代码FileOutputStream没有自定义版本的方法flush.所以使用的flush方法是它的超类的版本OutputStream.flush in的代码OutputStream如下
public void flush() throws IOException {
}
Run Code Online (Sandbox Code Playgroud)
如你所见,这是一个空的方法什么都不做,所以调用与否是相同的.
| 归档时间: |
|
| 查看次数: |
11427 次 |
| 最近记录: |