5

是否可以在 java 中打开一个文件 a 附加数据并多次关闭。例如:

 //---- psuedocode
      //class variable declaration 
      FileWriter writer1 = new FileWriter(filename);

      fn1:

         writer.append(data - title);

      fn2:
       while(incomingdata == true){
         writer.append(data)
         writer.flush();
         writer.close()
        }

问题在于while循环。文件已关闭,无法再次打开。任何人都可以帮助我吗?

4

4 回答 4

2

建议不要每次都关闭和重新打开文件的答案是非常正确的。

但是,如果您绝对必须这样做(我不清楚您是否这样做),那么您可以每次都创建一个新的 FileWriter。构造 FileWriter 时将 true 作为第二个参数传递,以获取附加到文件而不是替换文件的参数。像

FileWriter writer1 = new FileWriter(filename, true); 
于 2012-03-20T07:21:39.030 回答
2

关闭流后,进一步的 write() 或 flush() 调用将导致抛出 IOException。但是,关闭先前关闭的流没有任何效果。

 while(incomingdata == true){
         writer.write(data)
 }
 writer.close()

您不需要每次都冲洗。因为调用close()将在关闭流之前先刷新数据。

更新为

我创建的文件必须保存。我应该关闭它,以便更新时间戳。那是文件实时同步的时间。

像这样使用它

while(incomingdata == true){
             writer.append(data);
             writer.flush();
}
writer.close();
于 2012-03-20T07:22:01.160 回答
1

一旦文件关闭,您将需要重新打开它。调用writer.flush()应该刷新流。writer.close()因此,基本上,您将从while循环中删除。这将允许您在完成文件后关闭该文件。

所以你有两个选择,要么writer.close()从循环中删除,要么在while循环开始时创建一个新FileWriter实例。

于 2012-03-20T07:21:39.950 回答
0

我不建议您尝试关闭您的文件然后重新打开它。打开文件是一项昂贵的操作,执行此操作的次数越少,代码运行速度就越快。

打开一次,完成写入后关闭文件。这将在您的循环之外。

于 2012-03-20T07:20:32.477 回答