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

Java中使用File.separator读取文件无法遍历所有行的解决方法

问题根源

你犯了一个关键错误:使用了Scanner(String source)构造方法,这个方法的作用是扫描传入的字符串本身,而非该路径指向的文件。所以不管你用File.separator还是直接写路径,只要传给Scanner的是字符串路径,它只会把路径字符串当成内容输出,和文件实际内容无关。

你说直接写路径时代码正常,大概率是当时误将路径包装成了File对象传入Scanner(而非直接传字符串),才会正确读取文件。

解决方案

要读取文件内容,必须将路径转换为文件对象后传入Scanner,或者使用更现代的NIO方式读取。

方式1:使用File对象配合Scanner

import java.io.File;
import java.util.Scanner;

public class ReadFile {
    public static void main(String[] args) {
        String path = "C:" + File.separator + "testFolder" + File.separator + "one.txt";
        try (Scanner sc = new Scanner(new File(path))) { // 使用try-with-resources自动关闭资源
            while (sc.hasNextLine()) {
                System.out.println(sc.nextLine());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方式2:Java 7+推荐的NIO方式

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class ReadFile {
    public static void main(String[] args) {
        String path = "C:" + File.separator + "testFolder" + File.separator + "one.txt";
        try {
            List<String> lines = Files.readAllLines(Paths.get(path));
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意:使用文件操作时一定要处理异常,并且确保资源被正确关闭(try-with-resources是推荐的方式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:25:39