0

我遇到了一个小问题,看起来很简单(我个人认为是这样),但我找不到答案。但至少我不知道如何解决它。

当我点击保存按钮时,我将一些行写入 .txt 文件。然后,当我输入其他内容并再次点击保存时,它会覆盖我的第一行。

但我希望它写在新的一行。此外,当我再次关闭并重新启动应用程序并再次点击保存时,它必须再次将文本保存在新行上。

所以基本上:我怎样才能将文本写入 .txt 文件,而不覆盖前面的行。我可以写入文件,所以这不是问题,而只是如何不覆盖。

这是我的代码的“小”部分:

   public void Data_save_contacts(View v) {

        Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

        try {

                writer_contact = new BufferedWriter(new FileWriter(root + "/Save/Contacten.txt"));
                writer_contact.write("Perceel "+str_boer_teler_nummer+" = "+str_boer_teler);
                writer_contact.newLine();   

        } catch (IOException e) {
            System.err.println(e);
        }
}

请把我引向好的方向。

已经谢谢了, Bigflow

4

4 回答 4

3

尝试:

public FileWriter (File file, boolean append)

设置appendtrue

于 2012-04-06T08:33:41.463 回答
3

你所要做的

writer_contact = new BufferedWriter(new FileWriter(root + "/Save/Contacten.txt",true));

正如java文档中所说:

FileWriter

public FileWriter(File file,
              boolean append)
       throws IOException

Constructs a FileWriter object given a File object. If the second argument is true, then bytes will be written to the end of the file rather than the beginning.

Parameters:
file - a File object to write to
append - if true, then bytes will be written to the end of the file rather than the beginning 
于 2012-04-06T08:34:41.977 回答
0

好吧,鉴于这只是您的一小部分代码(我假设您将其分块以免泄露其他部分),我怀疑您正在打开文件 root + "/Save/Contacten. txt”在非附加模式。第一次调用它时,文件被创建并写入。随后您调用它时,它会找到该文件,并重新创建(或删除内容)然后写入该文件。

尝试使用:

writer_contact = new BufferedWriter(new FileWriter(root + "/Save/Contacten.txt", true));

当然,第一次打开/创建文件时,您会希望它为 false(除非您总是希望在文件已存在的情况下追加)。

试一试。

于 2012-04-06T08:41:19.817 回答
0

您可以检查文件是否存在?

或者您也可以附加旧文件。

如果不退出然后只创建一个新的。

于 2012-04-06T08:47:37.630 回答