重新创建文件并编写新内容

时间:2011-03-01 02:12:44

标签: java file

我试图从java中的文本文件中删除一行,我已阅读并且似乎有几个解决方案:删除文件并重新创建并写入,或写入临时文件和重命名。看起来这两个解决方案都涉及关闭流,我可能会在这里找不到简单的东西,但是在关闭它之后如何使用带有文件的编写器,我可以做些什么来在重新创建或重命名后立即启动并运行新的编写器该文件,以便我可以修改新文件?

例如:

我有一个文件movies.txt,我将该文件中的所有行保存为变量,关闭movies.txt上的流,删除movies.txt并创建movies.txt,如何写入新电影。我关闭了流后的txt?

或者如果我重命名文件:

我有movies.txt,我创建temp.txt并将所有内容从movies.txt写入temp.txt,关闭movies.txt上的流,将temp.txt重命名为movies.txt,如何写入movies.txt如果溪流关闭了?

2 个答案:

答案 0 :(得分:2)

您的临时文件方法可能更容易。 假设您要删除文件中的第n行,以下是您要遵循的步骤。

  • 为目标文件创建一个阅读器
  • 为临时文件创建编写器
  • 从源文件中读取每一行并写入临时文件< ---执行此操作n-1次
  • 跳过第n行
  • 从源文件中读取每一行并写入临时文件直到源文件结束。
  • 关闭源文件阅读器和临时文件编写器。
  • 删除源文件并将临时文件重命名为源文件名。

答案 1 :(得分:0)

我在想你正在考虑如果你重新打开文件写作,你就会破坏它当前的内容。

这通常是正确的,但您也可以在写入追加模式下打开文件;例如,使用this constructor

  FileOutputStream fos = new FileOutputStream("file.txt", true);

这会导致输出写入文件末尾(如果已存在)。

(可能有其他方法可以做到这一点,但这是一种简单的方法。)