Java实现文件按行拆分并存储到数组(无需创建新文件)
文件按行拆分存入数组的实现方案
你的代码存在几个明显问题:
File类没有split()方法,这个方法属于String类,不能直接调用在File对象上- 代码中未初始化
myReader就调用close(),会导致编译错误 - 异常处理不完整,仅捕获了
FileNotFoundException,但文件读取过程中还可能出现其他IO异常
以下是两种可行的实现方式:
方法一:使用NIO类库(简洁高效)
适合处理中小文件,一行代码就能完成读取并转成数组:
import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.List; class Read { public static void main(String args[]) { File targetFile = new File("file.txt"); try { // 读取所有行到List集合,再转换为字符串数组 List<String> lineList = Files.readAllLines(targetFile.toPath()); String[] lineArray = lineList.toArray(new String[0]); // 示例:遍历输出数组内容 for (String line : lineArray) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
方法二:使用BufferedReader逐行读取(适合大文件)
如果文件体积较大,一次性加载全部内容会占用过多内存,推荐逐行读取:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; class Read { public static void main(String args[]) { List<String> lineList = new ArrayList<>(); // 使用try-with-resources语法,自动关闭流资源 try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) { String currentLine; while ((currentLine = reader.readLine()) != null) { lineList.add(currentLine); } // 将List转换为字符串数组 String[] lineArray = lineList.toArray(new String[0]); // 示例:遍历输出数组内容 for (String line : lineArray) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
关键说明
Files.readAllLines会将文件所有行一次性读取到内存,代码简洁但不适合超大文件BufferedReader逐行读取,内存占用更低,适合处理大文件- 两种方案都处理了
IOException,覆盖了文件不存在、读取失败等所有IO异常场景
内容的提问来源于stack exchange,提问作者asgr
相关产品推荐
相关产品推荐

