Java读取文本文件所有行并按分号分割,添加换行分隔符问题
解决文本文件读取:逐行分割并添加换行符的问题
原代码的问题
- 循环中始终只处理第一行(
lines.get(0)),完全没用到循环变量line,导致最终结果只有第一行的分割内容。 - 没有收集所有行的处理结果,也没在每行分割后添加换行符。
- 主类中重复调用
readFile(),做了两次文件读取,属于冗余操作。
修正后的代码
FileHandler类的readFile方法
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; public class FileHandler { public String[] readFile() { Path path = Paths.get("src/main/resources", "crochet.txt"); List<String> resultList = new ArrayList<>(); if (Files.exists(path)) { try { List<String> lines = Files.readAllLines(path); for (String line : lines) { // 分割当前行的元素,加入结果列表 String[] splitParts = line.split(";"); for (String part : splitParts) { resultList.add(part); } // 在每行分割完成后添加换行符 resultList.add("\n"); } } catch (Exception e) { System.err.println("读取文件出错: " + e.getMessage()); } } else { System.err.println("Error: File not found: " + path.toAbsolutePath()); } // 将列表转为String数组返回 return resultList.toArray(new String[0]); } }
主类调用代码
public class Main { public static void main(String[] args) { FileHandler fileHandler = new FileHandler(); // 只调用一次readFile,避免重复读取 String[] input = fileHandler.readFile(); // 可打印结果验证 for (String s : input) { System.out.print(s); } } }
关键修改说明
- 用
ArrayList<String>代替固定长度数组:动态收集所有元素,避免数组长度不足的问题。 - 遍历每一行并处理:使用循环变量
line分割当前行,而非固定取第一行。 - 添加换行符:每行分割完成后,往列表里加入
"\n"元素,满足需求。 - 异常处理:添加
try-catch捕获文件读取时的异常(如IO异常),增强代码健壮性。 - 主类优化:只调用一次
readFile(),避免重复IO操作。
内容的提问来源于stack exchange,提问作者allaroundnoob
相关产品推荐
相关产品推荐

