Java:如何读取文本文件的每一行并将每一行设置为数组元素?

我试图阅读文本文件的每一行中列出的问题,然后将每一行添加到数组中,以便稍后可以单独调用它们。 我几乎肯定可以用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做的例子。

我会使用一个ArrayList ……就像这样……

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

顺便说一句,正如jlordo在注释中指出的那样,你构造方法的方式,你的循环的唯一出路是将行变为null,所以,当你到达return语句时,你将返回空值。 你究竟想回到这里的是什么? 如果它是整个行文件,则需要将它们添加到String中。

而不是数组使用ArrayList ,这是动态的,并找到具体的代码。

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

对于第二个文件,您应该维护一个map表示Map

  private static String readFile(String pathname) { List lines = new ArrayList (); 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 ,它会动态增长。 将它声明为一个字段,我在这个例子中只使用了一个局部变量。 你可以像以后一样迭代它:

  for(String line : lines) { System.out.println(line) ; } 

你不能只是创建一个字符串arraylist并使用readLine()添加读取的每一行吗? 然后你可以将arraylist转换为普通数组。

 listArray.toArray(strArray); 

使用番石榴文件 :

一行代码:

 System.out.println(Files.readLines(new File("C:\\sample.txt"), Charsets.UTF_8)); 

这在java 8中非常简单和简洁:

 List fileLines = Files.lines(Paths.get("/file/path/")).collect(Collectors.toList());