【问题标题】:Java: How do you read each line of a text file and setting each line as an array element?Java:如何读取文本文件的每一行并将每一行设置为数组元素?
【发布时间】:2012-10-25 00:31:42
【问题描述】:

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

虽然它与此没有太大关系,但正如我所提到的,这是一个包含问题的文件。如果我得到了这个问题的解决方案,我将为所有问题的答案创建另一个文件,然后我将对那个文件做同样的事情。

有没有人知道一种不太复杂的方法来做到这一点?如果它必须是复杂的然后告诉我。我想要某种类型的示例,而不仅仅是指向不同站点的链接。我不是说我只会接受那个。

感谢您的宝贵时间!

附:我已阅读有关此主题的其他问题,但找不到合适的答案和/或示例来说明我在 Java 中尝试做的事情。

【问题讨论】:

  • 有什么情况需要链接问答
  • I did figure out how to read a whole text file and setting it all to a string: NO,当您返回时,您的字符串将为null

标签: java arrays file bufferedreader filereader


【解决方案1】:

这在 java 8 中非常简单明了:

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

【讨论】:

    【解决方案2】:

    我会使用 ArrayList... 像这样...

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

    顺便说一句,正如 jlordo 在评论中指出的那样,您构建方法的方式是,退出循环的唯一方法是让 line 为空,因此,当您到达 return 语句时,您'返回空值。你到底想回到这里做什么?如果它是整个文件的行,您需要随时将它们添加到字符串中。

    【讨论】:

      【解决方案3】:

      使用番石榴Files

      一行代码:

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

      【讨论】:

        【解决方案4】:

        您不能只创建一个字符串数组列表并将使用 readLine() 读取的每一行添加到其中吗?然后就可以将arraylist转换成普通数组了。

        listArray.toArray(strArray);
        

        【讨论】:

          【解决方案5】:

          而不是数组使用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&lt;question,answer&gt; 意味着一个Map&lt;String,String&gt;

          【讨论】:

            【解决方案6】:
             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&lt;String&gt;,它会动态增长。 声明为字段,我在这个例子中只是使用了一个局部变量。 您可以稍后像这样遍历它:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-05-22
              • 1970-01-01
              • 2018-08-24
              • 1970-01-01
              • 2011-09-03
              • 1970-01-01
              • 1970-01-01
              • 2023-01-01
              相关资源
              最近更新 更多