0

「test.txt」という名前のファイルを作成し、ユーザーからの入力を取得して、入力をファイルに書き込みました。すべてが正常に動作します。プログラムはまったくエラーを表示しません。ファイルが作成され、プログラムはユーザーからの入力を受け取りますが、ファイルの内容を確認すると空でした。誰かが私のコードの何が問題なのかを理解できますか? コードは次のとおりです。

package InputOutput;

import java.io.*;

public class CharacterFileReaderAndFileWriter{

private BufferedReader br = null;
private BufferedWriter bw = null;
private PrintWriter pw = new PrintWriter(System.out, true);

public File createFile() throws IOException{
    File f = new File("test.txt");
    return f;
}

public void writeToFile() throws IOException{
    try{
        bw = new BufferedWriter(new FileWriter(createFile()));
    }
    catch(FileNotFoundException ex){
        ex.printStackTrace();
    }

    //take input from the console (user)
    br = new BufferedReader(new InputStreamReader(System.in));
    String s;

    pw.println("Please enter something");
    pw.println("To stop the program, enter 'stop'");

    do{
        s = br.readLine();
        if(s.compareTo("stop")==0)
            break;
        s+= "\r\n";//adding an new line to the string s         
        bw.write(s);            
    }
    while(s.compareTo("stop")!=0);

    br.close();
    bw.close();

}

public static void main(String[] args) throws IOException{

    CharacterFileReaderAndFileWriter cfr = new CharacterFileReaderAndFileWriter();
    cfr.writeToFile();
}

}

4

2 に答える 2

1

ほとんどのサンプル プログラムは、 の前に を呼び出す必要があることを示して.flush()BufferedWriterます.close()。これは必須ではなく、自動的に.close()呼び出されるはずですが、.flush()害はありません。また、すべてのStream/Writerオブジェクト.close()メソッドも逆の順序で呼び出す必要があります。ここでも、正しく記述されたクラスは.close()、ラップするすべてのオブジェクトを呼び出す必要がありますが、いずれにせよそれを実行しても害はありません。

後であなたを捕まえるかもしれない他のこと:

if(s.compareTo("stop")==0)

する必要があります

if ("stop".equalsIgnoreCase(s))

それはより効率的であり、NullPointerExceptiononの可能性を排除し、停止sのあらゆるケースを処理し、最も重要なことに、Java を使用するよりも慣用的です。.compareTo()

    s+= "\r\n";//adding an new line to the string s         
    bw.write(s);        

する必要があります

    bw.write(System.getProperty("line.separator"));        
    bw.write(s);        

s+=、収集する必要がある中間オブジェクトとガベージを作成します。行末をハードコーディングするのもよくありません。

于 2012-04-22T01:55:46.597 に答える
-2

出力ストリームを閉じる必要があります。file.close();

于 2012-04-22T01:56:34.290 に答える