1

ファイルの書き込みに問題があります。SDカードのファイルに行を追加するボタンのOnClickメソッドを作成したいのですが、代わりに前の行を削除して、現在の行の代わりにすべてのコンテンツを配置します。その結果、ボタンの最後のクリックで入力したテキストのみを取得しました。コードは次のとおりです。

if (txtFile.createNewFile() || txtFile.isFile()) {
                        FileOutputStream fOut = null;
                        try {
                            fOut = new FileOutputStream(txtFile);
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
                        BufferedWriter bwriter = new BufferedWriter(myOutWriter);
                        EditText desc__ = (EditText)findViewById(R.id.descriptionEditTExt);
                        try {
                            bwriter.newLine();
                            bwriter.write(lat+"|"+lng+"|"+desc__.getText().toString()+"|"+f+"|"+position);

                            bwriter.close();
                            myOutWriter.close();
                            fOut.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } else {
                        /* handle directory here */
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
4

1 に答える 1

2

FileOutputStreamコンストラクターを次のように書き換えてください。

FileOutputStream fos = new FileOutputStream(file, true);

ここでは、最初の問題を解決する追加モードでファイルを開くことをお勧めします..

次に、ファイルに新しい行を追加する場合は、"\r\n"文字列を使用します

e.g. fos.write("\r\n".getBytes());

お役に立てれば..

于 2012-10-27T19:31:59.640 に答える