在文本文件中添加新的文本行

时间:2013-08-08 12:06:33

标签: java

我的应用记录了声音。录制声音后,系统会要求用户输入新的文件名。现在我接下来要做的是在文本文件中添加所有文件名,以便稍后我可以将其作为数组读取以制作列表视图。

这是代码:

//this is in onCreate
File recordedFiles = new File(externalStoragePath + File.separator + "/Android/data/com.whizzappseasyvoicenotepad/recorded files.txt");
if(!recordedFiles.exists())
    {
            try {
                recordedFiles.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
//this executes everytime text is entered and the button is clicked
try {
            String content = input.getText().toString();
            FileWriter fw = new FileWriter(recordedFiles.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(">" + content + ".mp3");
            bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

现在的问题是,每当我录制一个新文件时,前一行都会被覆盖。因此,如果我记录了两个文件'text1'和'text2',在我记录text1之后,txt文件将显示text1,但是在我记录text2之后,text2将覆盖text1而不是插入新行。

我尝试添加:

bw.NewLine()

bw.write(">" + content + ".mp3");

但它不起作用。

如果我录制三个声音并将它们命名为sound1,sound2和sound3,我希望这是结果:

>sound1
>sound2
>sound3

4 个答案:

答案 0 :(得分:4)

FileWriter构造函数与boolean append参数

一起使用
FileWriter fw = new FileWriter(recordedFiles.getAbsoluteFile(), true);
//                                                              ^^^^

这将让文件在末尾附加文本,而不是覆盖以前的内容。

答案 1 :(得分:0)

您可以通过添加line.separator Property

来实现
 bw.write(">" + content + ".mp3");
 bw.write(System.getProperty("line.separator").getBytes());

答案 2 :(得分:0)

如果它应该覆盖,

FileWriter采用布尔值。因此,如果您想要附加到文件而不是覆盖,请使用true

答案 3 :(得分:0)

替换

FileWriter fw = new FileWriter(recordedFiles.getAbsoluteFile());

而不是

FileWriter fw = new FileWriter(recordedFiles.getAbsoluteFile(), true);