我对flush和close方法感到非常困惑。在我的代码中,我总是关闭我的FileOutputStream
对象。但是我想知道,如果我必须在这里使用冲洗方法,在哪里可以使用它?
我将编写一个反复下载4或5个文件的项目。我将编写一个方法(用于下载文件),我的方法将处于循环中并重复下载文件。我的方法将具有这样的代码。
该close
方法调用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();
}
请注意,该代码运行良好:成功下载了文件。但是我不确定要使用flush
。
该方法flush
用于“刷新”缓冲区中保留的字节。FileOutputStream
不使用任何缓冲区,因此flush方法为空。是否调用它不会更改代码的结果。
使用缓冲的编写器时,方法close
将显式调用flush
。
因此,当您要 在关闭流 之前和缓冲区已满之前(当缓冲区已满时,编写器无需等待刷新调用就开始写入数据)要写入数据时,需要调用flush 。
class的源代码FileOutputStream
没有method的自定义版本flush
。因此,flush
使用的方法是其超类的版本OutputStream
。刷新的代码OutputStream
如下
public void flush() throws IOException {
}
如您所见,这是一个不执行任何操作的空方法,因此调用它与否是相同的。
问题内容: 我无法通过一些Google搜索找到权威的答案。在Java Servlet中,可以通过response.getOutputStream()或response.getWriter()访问响应主体。写入流后,是否应该在此流上调用.close()? 一方面,Blochian鼓励始终关闭输出流。另一方面,我不认为在这种情况下有需要关闭的基础资源。套接字的打开/关闭在HTTP级别进行管理,以允许诸
我想知道,在语句类中调用close方法是否也会中止数据库中的sql查询,类似于如何取消方法?
关闭活动的非模态气球。只有在回调过程中才能使用此方法。 expression.Close expression 必需。该表达式返回一个Balloon 对象。 示例 本示例可实现的功能为:显示这样一个气球,该气球包含三台打印机各自的按钮。无论何时,只要用户单击其中任何按钮,ProcessPrinter 回调进程即开始运行,而该气球关闭。 Sub selectPrinter() Set bln = A
我试图用glRotatef旋转空间中的特定物体。我不太确定它在引擎盖下是如何工作的,所以我不确定我为对象顶点设置的法向量是否会随着顶点坐标旋转。我只需要知道它是否也旋转法线。
问题内容: 是的方法曾经叫什么名字?如果是这样,什么时候调用它?如果开发人员未调用它,为什么会出现在其中?该功能真正发生了什么?我已经看到了删除所有表的示例,但是有一条评论说删除所有表不是您应该做的。有什么建议? 问题答案: 当您构造一个比打开的数据库版本新的SQLiteOpenHelper时,将调用它。做什么取决于新旧版本之间在数据库中所做的更改。不删除已更改的表的唯一情况是,更改所注意的不只是
做 截断如果它已经存在?令人惊讶的是,Java的API留档没有说。API也不会留档Java7。语言本身的规范对类的语义学没有什么可说的。 我知道 导致附加到文件。但附加和截断并不是唯一的可能性。如果将100个字节写入1000字节的文件,一种可能性是最后900个字节保持原样。