0

当试图将数据从保存的 txt 文件传输到 ArrayList 中的元素时,我遇到了一个相当烦人的 null 问题。似乎当我使用 bufferedReader.readLine() 时,它会擦除​​ txt 文件中的数据,因此每当我稍后在程序中再次尝试读取文件时,它只是一系列空条目。我相信我需要阅读两次文件;一次是查找 txt 文件中的行数,第二次是使用 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 回答