【问题标题】:Java: How do I save seperate lines of text to a string array from a .txt file?Java:如何将单独的文本行从 .txt 文件保存到字符串数组?
【发布时间】:2016-03-04 00:50:59
【问题描述】:
import java.util.*;
import java.io.*;

public class readFiles2 {

public static void main(String[] args) throws IOException{
    // TODO Auto-generated method stub

    BufferedReader reader = new BufferedReader(new FileReader("someFile.txt"));

    try{
        StringBuilder text = new StringBuilder();
        String readStringLine = reader.readLine();
        String[] lines= {};


        for(int i = 0; readStringLine != null; i++){
            readStringLine = reader.readLine();

            //Trying to save seperate lines of text in an array.
            lines[i] = readStringLine.toString();
        }

    }
    finally{
        reader.close();
    }


}

所以我要做的是将单独的字符串行从 .txt 文件保存到 String[] 数组。我现在有点不知所措,真的不知道我还能做什么。

【问题讨论】:

  • 使用BufferedWriter,调用append 编写文本并在完成后调用newLine 添加新行(每行)
  • 您的代码不起作用吗?我看到的一个问题是你的数组永远不会被指定大小,所以当你调用 lines[i] 时它会崩溃

标签: java arrays string file object


【解决方案1】:

由于您不知道数组有多少个字符串,您可能希望将字符串放入列表中,并在最后转换为数组:

String readStringLine;
List<String> lines = new ArrayList<String>();

while((readStringLine = reader.readLine()) != null) {
    lines.add(readStringLine);
}

String[] linesArray = lines.toArray(new String[lines.size()]);

编辑:简化为使用 while 循环从阅读器收集行。

【讨论】:

    【解决方案2】:

    ArrayList<String> line = new ArrayList<>(); FileReader file = new FileReader(file.txt); BufferedReader reader = new BufferedReader(file); while (reader.ready()) { line.add(reader.readLine()); reader.close(); file.close(); }

    要访问,请使用 line.get(i);其中 i>=0 和 i

    【讨论】:

      【解决方案3】:

      使用自动关闭接口和 Java 8 流:

      String [] stringsArray = null;
      try(BufferedReader br = new BufferedReader(new FileReader("someFile.txt"))) {
          List<String> strings = new ArrayList<>();
          br.lines().forEach(c -> strings.add(c));
          stringsArray = strings.toArray(new String[strings.size()]);
      }
      

      您需要 Java 8 才能运行此代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        相关资源
        最近更新 更多