java中scanner读取文件指定格式数据的核心是按行或分隔符切分、类型转换与格式校验;适用于结构清晰的文本,需注意编码设置、资源关闭及异常处理。

Java 中用 Scanner 读取文件里指定格式的数据,核心是:**按行或按分隔符切分 + 类型转换 + 格式校验**。它适合结构清晰、格式固定的文本(比如每行一个整数、逗号分隔的姓名年龄、固定字段顺序的日志等),不推荐用于大文件或二进制内容。
用 Scanner 按行读取并解析指定格式
适用于每行数据结构一致,比如:
张三,25,北京李四,30,上海
操作步骤:
- 创建
Scanner并传入File或FileInputStream - 用
hasNextLine()+nextLine()逐行读取 - 对每行用
String.split(",")切分,再用Integer.parseInt()等转类型 - 建议加
try-catch处理格式异常(如数字格式错误、字段缺失)
用 Scanner 设置分隔符直接提取字段
如果数据本身有明确分隔符(如空格、逗号、制表符),可让 Scanner 自动切分:
- 调用
useDelimiter(",")或useDelimiter("\s+")(匹配多个空白) - 然后直接用
next()、nextInt()、nextDouble()等方法按需取值 - 注意:
nextInt()不会跳过换行符,后续调用nextLine()前要加nextLine()清缓冲区
读取时跳过注释或空行提升健壮性
真实文件常含注释(如 # 开头)或空行,可这样过滤:
- 读取每行后,先用
line.trim().isEmpty()判断是否为空行 - 再用
line.startsWith("#")或line.startsWith("//")跳过注释行 - 只对有效行做解析,避免
NumberFormatException等异常
别忘了关闭资源和处理编码问题
Scanner 本身不直接处理字符编码,容易乱码:
- 创建时显式指定编码,例如:
new Scanner(new File("data.txt"), "UTF-8") - 务必在 finally 块中调用
scanner.close(),或用 try-with-resources(推荐) - 示例:
try (Scanner sc = new Scanner(new File("a.txt"), "UTF-8")) { ... }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











