用Java打开现有文件并关闭它。

时间:2012-03-20 07:16:33

标签: java file filewriter

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

 //---- 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 个答案:

答案 0 :(得分:2)

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

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

FileWriter writer1 = new FileWriter(filename, true); 

答案 1 :(得分:1)

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

因此,您有两个选项,可以从writer.close()循环中删除while,也可以在循环开头创建一个新的FileWriter实例。

答案 2 :(得分:1)

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

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

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

已更新

  

我创建的文件必须保存。我应该这样做   关闭它以便更新时间戳。这是同步文件的时候   住。

像这样使用

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

答案 3 :(得分:0)

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

打开一次,并在写完文件后关闭文件。这将超出你的循环。