2

テキスト ファイルの各行にリストされている質問を読み取ってから、各行を配列に追加して、後で個別に呼び出すことができるようにしようとしています。私はJavaでそれを行うことができるとほぼ確信していますが、それを行う方法はわかりません.

テキストファイル全体を読み取り、すべてを文字列に設定する方法を見つけました。

    private static String readFile(String pathname) {
    String line = null;
    try {
        BufferedReader reader = new BufferedReader(new FileReader(pathname));
        while((line = reader.readLine()) != null){
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return line;
}

これとはあまり関係ありませんが、前述したように、これは質問を保持するファイルです。この問題の解決策が得られた場合、質問に対するすべての回答用に別のファイルを作成し、そのファイルに対して同じことを行います。

これを行うための過度に複雑ではない方法を知っている人はいますか? それが複雑でなければならない場合は、それを教えてください。さまざまなサイトへのリンクだけでなく、ある種の例が欲しい. 私はそれを取るだけだと言っているわけではありません。

お時間をいただきありがとうございます!

PSこのトピックに関する他の質問を読みましたが、Javaでやろうとしていることに対する適切な答えや例を見つけることができませんでした。

4

6 に答える 6

5

私はArrayListを使用します...そのように...

ArrayList<String> questions = new ArrayList<String>();


/// in your loop...
while((line = reader.readLine()) != null){
  questions.add(line);
}

ちなみに、jlordo がコメントで指摘しているように、メソッドを構造化した方法では、ループから抜け出す唯一の方法は、行を null にすることです。そのため、return ステートメントに到達するまでに、戻りますヌル。ここで実際に何を返そうとしていますか?それが行のファイル全体である場合は、それらを String に追加する必要があります。

于 2012-11-05T07:17:44.880 に答える
2

array use の代わりに、ArrayList動的で具体的なコードを見つけます。

private static List<String> readFile(String pathname) {
    String line = null;
    List<String> list = new ArrayList<String>();
    try {
        BufferedReader reader = new BufferedReader(new FileReader(pathname));
        while((line = reader.readLine()) != null){
            list.add(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return list;
}

map<question,answer>2 番目のファイルについては、 a手段 aを維持する必要がありますMap<String,String>

于 2012-11-05T07:17:11.703 に答える
1
 private static String readFile(String pathname) {
    List<String> lines = new ArrayList<String> ();
    String line = null;
    try {
        BufferedReader reader = new BufferedReader(new FileReader(pathname));
        while((line = reader.readLine()) != null){
            lines.add(line) ;
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

ArrayList<String>私がしたように使用すると、動的に成長します。フィールドとして宣言します。この例ではローカル変数を使用しました。後で次のように繰り返すことができます。

 for(String line : lines)
   {
      System.out.println(line) ;
    }
于 2012-11-05T07:17:08.533 に答える
1

Guavaファイルを使用します。

1 行のコード:

System.out.println(Files.readLines(new File("C:\\sample.txt"), Charsets.UTF_8));
于 2012-11-05T08:25:11.023 に答える
1

文字列配列リストを作成し、 readLine() を使用して読み取った各行を追加することはできませんか? 次に、arraylist を単純な配列に変換できます。

listArray.toArray(strArray);
于 2012-11-05T07:19:18.907 に答える