2

アプリで SD カードにフォルダーを作成し、そこに出力テキスト ファイルを配置します (例: mnt/sdcard/myfolder/textfile_name)。getAbsolutePath のメソッドを正常に実装しましたが、テキスト ファイルに問題があります。最初のファイルに 5 行を書き込み、次のファイルに 5 行未満を書き込むと、最初のファイルの最後の行が表示されます。 2 番目のファイルにあります。アプリで追加コマンドを使用します。最後のものを追加せずにどうやって書くのですか?これらは私のコードです

public void simpan(View v)
{
    SimpleDateFormat sdf = new SimpleDateFormat("dd_MM_yy_HH_mm_ss");
    String time = sdf.format(new Date());
    generate("Transaction " + time.toString() + ".txt");
    Toast.makeText(getApplicationContext(), "Record Saved to /mnt/sdCard/Soto Betawi/" + time.toString(), Toast.LENGTH_LONG).show();
}

private static void generate(String file_name)
{
    try
    {
        File root = Environment.getExternalStorageDirectory();
        File dir = new File(root.getAbsolutePath() + "/Soto Betawi");
        dir.mkdirs();
        File newfile = new File(dir, file_name);
        FileWriter writer = new FileWriter(newfile);
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
        String time = sdf.format(new Date());
        writer.append("Soto Betawi Asli\n");
        writer.append("Haji HUSEN\n");
        writer.append("Jalan Padang Panjang No. 6C\n");
        writer.append("Manggarai, Jakarta Selatan\n\n");
        writer.append("Transaction time : " + time + "\n");
        writer.append("-------------------------------------------------\n");
        writer.append("Menu\t\t\tPrice\t\t\tQuantity\n");
        writer.append("-------------------------------------------------\n");
        writer.append(value1 + "\t\t" + hrg1 + "\t\t" + qty1.getText().toString() + "\n");
        writer.append(value2 + "\t\t" + hrg2 + "\t\t"+ qty2.getText().toString() + "\n");
        writer.append(value3 + "\t\t" + hrg3 + "\t\t" + qty3.getText().toString() + "\n");
        writer.append(value4 + "\t\t" + hrg4 + "\t\t" + qty4.getText().toString() + "\n");
        writer.append(value5 + "\t\t" + hrg5 + "\t\t" + qty5.getText().toString() + "\n");
        writer.append(value6 + "\t\t" + hrg6 + "\t\t" + qty6.getText().toString() + "\n");
        writer.append(value7 + "\t\t" + hrg7 + "\t\t" + qty7.getText().toString() + "\n");
        writer.append(value8 + "\t\t" + hrg8 + "\t\t" + qty8.getText().toString() + "\n");
        writer.append(value9 + "\t\t" + hrg9 + "\t\t" + qty9.getText().toString() + "\n");
        writer.append(value10 + "\t\t" + hrg10 + "\t\t" + qty10.getText().toString() + "\n\n");
        writer.append("Total Pay : Rp. " + hasil);
        writer.flush();
        writer.close();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

ありがとう。

4

3 に答える 3

5
new FileWriter(newFile);

(上書き)書き込み用のファイルを作成します。使用する必要があります

new FileWriter(newFile, true);

追加モードで開きます。

于 2012-12-28T17:00:17.087 に答える
0
 FileWriter fWriter;
            try{
                 fWriter = new FileWriter(“\sdcard\yourfilename.txt”);
                 fWriter.write(yourString);
                 fWriter.flush();
                 fWriter.close();
             }catch(Exception e){
                      e.printStackTrace();
             }

ここでは、flush() と close() の呼び出しが重要です。また、「sdcard」がマウントされていることを確認してください。

于 2012-12-28T17:54:14.133 に答える
0

FileWriter に使用するコンストラクターを変更します。

変更: FileWriter writer = new FileWriter(newfile); To: FileWriter writer = new FileWriter(newfile, true);

于 2012-12-28T17:00:32.423 に答える