-1

ファイルからテキストを読み取る必要があるプログラムを作成しようとしています。調査を行っているときに、必要なことを正確に実行する次のコードを見つけました。

String string="";

try{

        InputStream ips = new FileInputStream("WORDS.txt"); 
        InputStreamReader ipsr = new InputStreamReader(ips);
        BufferedReader br = new BufferedReader(ipsr);
        String line;
        while ((line=br.readLine())!=null){
            System.out.println(line);
            string+=line+"\n";
        }
        br.close(); 
    }       
    catch (Exception e){
        System.out.println(e.toString());
    }

誰かがこのコードがどのように機能するか説明してもらえますか? 私はプログラミングが初めてで、このコードのほとんどに慣れていません。これは宿題ではなく、個人的な利益のために書いているプログラムです。ありがとうございました。

4

2 に答える 2

5

プログラムが何をするかを理解したら (これは重要です。これらはすべての Java プログラマーにとって不可欠な概念です。誰かが記入してくれることを願っています)、それを改善するために私が行うことは次のとおりです。

  • このためのコードはまったくありません。ファイルを文字列に読み込む問題はすでに解決されています。Commons IOを使用します。

  • ループ内で文字列連結を使用しないでください。StringBuilder を使用します。必要な容量 (ファイル サイズなど) を推測して StringBuilder を初期化します。

  • Reader の作成時に明示的な文字セットを指定します。そうしないと、プログラムは異なるコンピューター間で移植できません。

  • 本当に必要でない限り、最初に改行を削除してから再度追加しないでください。これにより、読み取られるデータが変更される可能性があります (元のファイルで別の改行スキームが使用されている場合)。

  • 例外をキャッチして印刷しないでください。コールスタックを処理できるコードに伝播させます。

  • 結果の文字列を空に初期化しないでください。コードが完了すると、文字列はデータを保持します。そうでない場合は、null または例外が必要です。空の文字列は、エラーを見つけるのを難しくします。文字列をまったく初期化しないことをお勧めします。null にすることもできません。そうすると、ここで素晴らしいコンパイル エラーが発生し、例外が発生した場合に String がどうあるべきかを明示的に指定するように求められます。

  • ファイルから読み取るコードを独自のメソッドに配置します。文字列を返すようにします。後でその文字列をどうするかは、このメソッドには関係ありません。

于 2013-03-19T02:01:34.077 に答える
1

大まかに言うと、ファイルを 1 行ずつ読み取り、ファイルの文字データで構成される string* を作成します。


*不必要に非効率的な方法で; ループ内の文字列連結は、ほとんどの場合、 a の使用に置き換える必要がありますStringBuilder

于 2013-03-19T01:59:09.800 に答える