1

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

这是代码:

//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

4 回答 4

4

使用带参数FileWriter的构造函数boolean append

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

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

于 2013-08-08T12:09:35.470 回答
0

代替

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

代替

FileWriter fw = new FileWriter(recordedFiles.getAbsoluteFile(), true);
于 2013-08-08T12:17:37.413 回答
0

您可以通过添加line.separator 属性来做到这一点

 bw.write(">" + content + ".mp3");
 bw.write(System.getProperty("line.separator").getBytes());
于 2013-08-08T12:10:53.817 回答
0

FileWriter如果它应该覆盖,则需要一个布尔值。因此true,如果您想附加到文件而不是覆盖,请使用。

于 2013-08-08T12:12:11.200 回答