2

テキスト ファイル全体を読み取り、その内容全体を 1 つの文字列に格納したいと考えています。次に、文字列をコンソール ウィンドウに出力したいと思います。私はこれを試しました:

import java.util.Scanner;
import java.io.*;

public class WritingTextFiles{

    public static void main (String [] args) throws IOException{
        FileWriter fw= new FileWriter("testing.txt");  
        Scanner in= new Scanner (System.in);
        String testwords=in.nextLine();  
        fw.write(testwords);  
        BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );  
        System.out.print(r);  
        fw.close();  
    }
}

コンソール ウィンドウに出力されるのは、java.io.BufferedReader@18fb397 だけです。

私のような初心者にこれを説明できる人はいますか?私はほとんど経験がありませんが、私は確かに学びたいと思っています。私はあらゆる提案を受け入れます。前もって感謝します!

4

2 に答える 2

6

java.io.BufferedReader@18fb397 がコンソールに出力される理由は、出力する文字列ではなく、バッファリングされたリーダーの参照を引数として出力するためです。

BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
System.out.print(r);

次のようにする必要があります。

BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
String s = "", line = null;
while ((line = r.readLine()) != null) {
    s += line;
}
System.out.print(s);

実際にファイルの行を読み取り、それを一時変数に格納してから、この変数を s に追加していることに注意してください。次に、BufferedReader ではなく、s を出力します。

最後に、終了したらファイルを閉じるのが賢明です。fw.close() を呼び出しますが、テストワードを書いた直後に呼び出す必要があります。これは、FileWriter が実際に文字列を書き込んだことを確認するためです。

于 2012-04-24T23:19:16.427 に答える