2016-10-29 12 views
0

javaで1つのファイルに書きたいのですが、別の方法で書きたいと思います。私は、出力がちょうどworldあるこのJavaの異なるメソッドで1つのファイルに1行ずつ書き込む方法

import java.io.*; 
public class Test { 
    public static File file = new File("text.log"); 


    public static void main (String [] args) throws IOException 
    { 
    FileWriter input= new FileWriter(file); 
    input.write("hello"); 
    input.write("\n"); 
    input.close(); 
    test(); 
    } 

    public static void test() throws IOException 
    { 

    FileWriter input= new FileWriter(file); 
    input.write("world"); 
    input.write("\n"); 
    input.close(); 
    } 


} 

を書きました。関数test()を呼び出すと、以前に書かれたものが上書きされるようです。

+0

他の人は追加モードについて言及していますが、 'FileWriter'自体をクラス変数にして一度しか開きませんか? –

+0

実際のレッスンは:あなたが使っているクラスのドキュメントを調べてください!それがプログラミングの本質です。新しいライブラリクラスを使い始めると、最初に**どのように動作しているのか、それがあなたのために何をしているのかを理解するために学習します! – GhostCat

答えて

1

new FileWriter(file, true)を書き込むと、上書きされずに追加されます。

3

あなたは2番目の引数としてtrueを渡すことで、追加モードでFileWriterを開く必要があります。Javadocから

public static File file = new File("text.log", true); 

公衆てFileWriter(文字列のファイル名、ブールAPPEND)
Fileオブジェクトを指定してFileWriterオブジェクトを構築します。 2番目の引数がtrueの場合、バイトは最初ではなくファイルの最後に書き込まれます。

+0

私はあなたがFileWriter = new FileWriter(file、true)を意味すると思います。なぜなら、あなたが私のコードに言いましたwjaを置くと、 "java.lang.String、boolean"を解決できないと言います。 – user3841581

+0

@ user3841581 Javadocはブール値と文字列を取るコンストラクタを明確に記述しています。 –

関連する問題