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

如何在Java中使用相对路径读取Rooms.txt文件?

解决Java相对路径读取文件失败的问题

首先得明确:Java里的相对路径是相对于程序运行时的当前工作目录,不是你项目里的代码目录,这是大部分人踩坑的核心原因。给你几个靠谱的解决办法:

  • 调整文件位置 + 检查运行工作目录
    把Rooms.txt直接放在项目根目录(和src文件夹同级的位置)。如果用IDEA运行,打开「Run/Debug Configurations」,确认「Working directory」是项目根目录(一般默认是$PROJECT_DIR$,没问题就不用改)。这时候用Paths.get("Rooms.txt")就能正常读取文件了。

  • 用类加载器读取(推荐,适配打包后的程序)
    如果是Maven/Gradle项目,或者以后要打包成Jar,把Rooms.txt放到src/main/resources目录下,然后用类加载器读取——这种方式不管是开发阶段还是打包成Jar后,都能稳定找到文件:

    URL resourceUrl = getClass().getResource("/Rooms.txt");
    if (resourceUrl == null) {
        throw new FileNotFoundException("找不到Rooms.txt文件,请确认它在resources目录下");
    }
    Path path = Paths.get(resourceUrl.toURI());
    
    public Game() throws IOException {
        map = new ArrayList<Room>();
        // 只读取一次文件,避免重复IO操作
        List<String> allRoomLines = Files.readAllLines(path);
        String room1 = allRoomLines.get(1);
        String room1Desc = allRoomLines.get(2);
    }
    

    额外提一句:你之前每次取行都调用Files.readAllLines(path),会重复读取整个文件,建议读一次存到List里复用,效率更高。

  • 基于当前工作目录构造路径
    如果你想硬用Paths.get,可以通过系统属性获取当前工作目录再拼接路径,比直接写裸相对路径更稳妥:

    // 获取程序运行的当前工作目录
    String workingDir = System.getProperty("user.dir");
    Path path = Paths.get(workingDir, "Rooms.txt");
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:25:11