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
相关产品推荐
相关产品推荐

