0

保存された txt ファイルから ArrayList 内の要素にデータを転送しようとすると、かなりイライラする null 問題が発生します。bufferedReader.readLine() を使用すると、txt ファイル内のデータが消去されるため、後でプログラムでファイルを再度読み取ろうとすると、一連の null エントリになります。ファイルを 2 回読み取る必要があると思います。1 回目は txt ファイルの行数を調べ、2 回目は for ループを使用して行を txt ファイルから ArrayList に転送します。以下のコードを含めましたので、どんな助けと洞察も大歓迎です! 最終的に、このtxtファイルからすべてのデータをarrayListに転送する必要があります...

    System.out.println("What is the name of the file you would like to open?");
    reader.nextLine();
    String name = reader.nextLine() + ".txt";
    System.out.println("Looking for file...");
    try {
      FileReader fr = new FileReader(name);
      BufferedReader buf = new BufferedReader(fr);
      //Create a temporary ArrayList to store data
      ArrayList<String> temp = new ArrayList<String>();

      //Find number of lines in txt file
      int numLine=0;
      String line = null;
      while ((line = buf.readLine()) != null) {
        numLine++;
      }

      //write data from txt file to ArrayList temp
      for (int i = 0; i < numLine; i++) {
          temp.add(buf.readLine());
      }
    }
    catch(IOException e) {
      e.printStackTrace();
    }
    System.out.println("\n *********************");
  }
4

1 に答える 1

0
//Find number of lines in txt file
  int numLine=0;
  String line = null;
  while ((line = buf.readLine()) != null) {
    numLine++;
  }

ファイルの行数は必要ありません。それをすべて削除します。

  //write data from txt file to ArrayList temp
  for (int i = 0; i < numLine; i++) {
      temp.add(buf.readLine());
  }

それをに変更します

String line;
while ((line = buf.readLine()) != null)
{
    temp.add(line);
}
于 2013-10-23T03:41:19.683 に答える