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

Java如何读取txt文件每行指定位置的数值并存入数组

Java读取txt指定列存入数组实现方法

你的文本是标准英文逗号分隔的逐行记录格式,要提取的数值是每行按逗号切分后的第4个字段(Java数组下标从0开始,对应索引位置3),用JDK自带的文件读取API就能实现,不需要引入第三方依赖。

实现步骤

  • 定义本地txt文件的实际存储路径,Windows系统路径中的反斜杠需要写双反斜杠做转义
  • 调用JDK内置的Files.readAllLines方法逐行读取所有文件内容
  • 遍历每一行内容,跳过空行避免运行报错
  • 对每行内容用英文逗号,做字符串切分,取出索引为3的字段,转换为Double类型存入集合
  • 如果需要基础类型的固定长度数组,最后将ArrayList转换为double数组即可

可直接运行的示例代码

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class TxtDataReader {
    public static void main(String[] args) {
        // 替换为你自己的txt文件路径
        String fileFullPath = "D:\\test\\bmi_data.txt";
        List<Double> targetValueList = new ArrayList<>();

        try {
            // 按UTF-8编码读取所有行
            List<String> lines = Files.readAllLines(Paths.get(fileFullPath), StandardCharsets.UTF_8);
            for (String currentLine : lines) {
                // 跳过空白行
                if (currentLine.isBlank()) {
                    continue;
                }
                // 按逗号切分当前行
                String[] splitFields = currentLine.split(",");
                // 提取第4个字段(下标3)转成Double
                double targetValue = Double.parseDouble(splitFields[3]);
                targetValueList.add(targetValue);
            }

            // 转换为固定长度的double数组
            double[] targetArray = targetValueList.stream().mapToDouble(Double::valueOf).toArray();

            // 打印验证提取结果
            for (double value : targetArray) {
                System.out.println(value);
            }

        } catch (IOException e) {
            System.out.println("文件读取异常,请检查文件路径是否正确、文件是否被占用");
            e.printStackTrace();
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("行格式错误:存在字段数量不足的行,请检查txt内容");
            e.printStackTrace();
        } catch (NumberFormatException e) {
            System.out.println("数值转换错误:目标字段不是合法的数字格式");
            e.printStackTrace();
        }
    }
}

注意事项

如果你的txt文件体积特别大(比如超过几百MB),不建议用readAllLines一次性把所有行加载到内存,可以换成BufferedReader逐行读取逐行处理,避免内存溢出。小文件用上面的代码写法最简洁,适合初学者快速实现需求。

内容的提问来源于stack exchange,提问作者pakupaku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:33:27