2

ファイルを作成し、プログラムを実行すると、データがファイルに書き込まれますが、プログラムを再度実行すると、新しいデータが古いデータに上書きされます。プログラムが実行されてデータが収集されると、これらのデータは、ファイル内の以前のデータを上書きすることなく、カスケードでファイルに書き込むことができます。

このコードは正常に実行されていますが、プログラムを再度実行すると、必要のない上書きが発生します。以前のデータをファイルに保存し、すぐに新しいデータを書き込む必要があります。このコードを編集すると、次のようになります。

 public class MainActivity extends Activity {
        File file;
        File sdCard;
        FileOutputStream fos;
        OutputStreamWriter myOutWriter;
        String FileName = "Output3.txt";
        String eol;
        OutputStream fos1;
        FileWriter fw ;
        BufferedWriter writer;
        BufferedWriter bw ;
        PrintWriter out;
        EditText txtData;
        Button btnWriteSDFile;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                    sdCard =getExternalFilesDir(null);
                    file = new File(sdCard,FileName);
            txtData = (EditText) findViewById(R.id.editText1);
            btnWriteSDFile = (Button) findViewById(R.id.button1);
            btnWriteSDFile.setOnClickListener(new OnClickListener() 
            {
                public void onClick(View v)
                {
        try {
                fos = new FileOutputStream(file);
                myOutWriter =new OutputStreamWriter(fos);
                eol = System.getProperty("line.separator");
                writer = new BufferedWriter(myOutWriter);
                                    writer.append(txtData.getText() + eol);// write this text.
                                    writer.flush();
                                    fos.close();

                                    Toast.makeText(v.getContext(),"Done writing SD 'Output.txt'", Toast.LENGTH_SHORT).show();
                                    txtData.setText("");
                                } catch (Exception e) {
                                    // e.printStackTrace();
                                    Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
                                }
                                finally{
                                    try {
                                        fos.close();
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                            }
                        });
                }





please,can any one answer me?
4

4 に答える 4

1

OutputStreamWriter を使用する代わりに、Filewriter FileWriter fileWritter = new FileWriter(file,true); を使用します。uがtrueを渡すと、内容が追加されます。これを試してください

FileWriter myOutWriter = new FileWriter(file.getName(),true);
            eol = System.getProperty("line.separator");
            writer = new BufferedWriter(myOutWriter);
                                writer.write(txtData.getText() + eol);// write this text.
                                writer.close();
                                fos.close();
于 2013-07-24T04:19:46.987 に答える
1

この行を変更します。

fos = new FileOutputStream(file);

に:

fos = new FileOutputStream(file, true);

これにより、データを追加できるようにファイルが開きます。

FileOutputStream の JavaDoc

于 2013-07-24T04:20:39.590 に答える
1

使用する

FileWriter writer = new FileWriter("yourfilename", true);

上書きする代わりにデータを追加するtrue2番目のパラメーターを渡す必要があります。

于 2013-07-24T04:21:13.263 に答える