You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java读取文本文件所有行并按分号分割,添加换行分隔符问题

解决文本文件读取:逐行分割并添加换行符的问题

原代码的问题

  1. 循环中始终只处理第一行(lines.get(0)),完全没用到循环变量line,导致最终结果只有第一行的分割内容。
  2. 没有收集所有行的处理结果,也没在每行分割后添加换行符。
  3. 主类中重复调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:25:21