2011-02-01 64 views
-1

私はテキストフィールドにエントリがあるたびにファイルに書き込むためのコードを用意しています。プロセスの後で、エントリが再び作成されると、ファイルへのエントリを続ける代わりにファイルが書き換えられ、以前のデータは失われます。既存のものに書き換えるにはどうすればよいのですか。後でアプリケーションを終了した後でもそれらのデータを読み込むようにします。ファイル読み込みと書き込み

書き込み処理のためのコードが与えられます。

public boolean writeToFile(String dataLine) { 
    dataLine = "\n" + dataLine; 


try { 
    File outFile = new File(filepath); 

    dos = new DataOutputStream(new FileOutputStream(outFile)); 

    dos.writeBytes(dataLine); 
    dos.close(); 
} catch (FileNotFoundException ex) { 
    return (false); 
} catch (IOException ex) { 
    return (false); 
} 
return (true); 

}

することは誰もがplsは、必要に応じてコードを変更し、私にそれを投稿できます。

答えて

1

appendモードでファイルを開きます。

それ

dos = new DataOutputStream(new FileOutputStream(outFile),true); 
0

参照[http://download.oracle.com/javase/6/でコンストラクタFileOutputStream(File file, boolean append)を使用しますdocs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File、boolean)] [1]

また、おそらくFileWriterを使用してテキストを書き込む必要があることに注意してください。 FileOutputStreamはバイナリデータ用です。

[1]:http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File、ブーリアン)

2

[たFileOutputStreamためのJava API] [1]に述べ:

public FileOutputStream(String name, 
         boolean append) 
       throws FileNotFoundException) 

が指定のファイルに書き込むための出力ファイルストリームを作成名。 2番目の引数がtrueの場合、バイトは最初ではなくファイルの最後に書き込まれます。このファイル接続を表す新しいFileDescriptorオブジェクトが作成されます。

だから、あなたのコードは次のようになります。

public boolean writeToFile(String dataLine) { 
    dataLine = "\n" + dataLine; 
    try { 
    File outFile = new File(filepath); 
    dos = new DataOutputStream(new FileOutputStream(outFile,true)); 
    dos.writeBytes(dataLine); 
    dos.close(); 
    } catch (FileNotFoundException ex) { 
    return (false); 
    } catch (IOException ex) { 
    return (false); 
    } 
    return (true); 
} 

[1]:http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.lang.String、ブール)

関連する問題