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();
            }

問題は、新しいファイルを記録するたびに、前の行が上書きされることです。したがって、2 つのファイル 'text1' と 'text2' を記録すると、text1 を記録した後、txt ファイルには text1 が表示されますが、text2 を記録した後、text2 は新しい行を挿入する代わりに text1 を上書きします。

追加してみました:

bw.NewLine()

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

しかし、うまくいきません。

3 つのサウンドを録音して、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

プロパティを追加することでそれを行うことができます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 に答える