Java 在/res 文件夹中查找文件并使用 Scanner 处理它

标签 java file filenotfoundexception

我的文件位于我的/res 中,更具体地说,位于/res/Menus/CharSelect 中。我已经进入构建路径并确保 res 文件夹是类路径。但是,我的新扫描仪(文件)导致 NullPointerException。 当我执行 file.exists(); 时它返回 FALSE...我不明白为什么。我 100% 确信该文件确实存在,并且它位于 CharSelect 文件夹中。 有人可以帮忙吗?提前致谢。

    file = new File(getClass().getResource("/Menus/CharSelect/Unlocked.txt").getPath());
    try
    {
        scanner = new Scanner(file);
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }

最佳答案

不要那样做。当您创建一个 jar 时,您将无法以 File 对象的形式访问该文件,而是以 URL 的形式访问该文件。您必须从中获取带有 openStream()InputStream .

相反,请使用 Scanner(InputStream)与:

try (InputStream is = getClass().getResource("/Menus/CharSelect/Unlocked.txt").openStream()) {
    scanner = new Scanner(is);
    ...
} // is.close() called automatically by try-with-resource block (since Java 7)

关于Java 在/res 文件夹中查找文件并使用 Scanner 处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22428738/

相关文章:

java - 同一条线上的 if/else 条件不起作用

file - 批处理 - 有没有办法批量同步锁定txt文件?

即使为每个人设置了权限,Java 也无法创建文件,除非管理员

c++ - 如何强制刷新文件

java - 在文件名中使用空格在 Android 中保存文件

java - 如何在将 JComponent 实例化添加到 JContainer 时添加 ActionListener?

java - 如何在 Install4j 中设置变量

java - 如何使用 Maven 在 Eclipse 中调试独立的 Java 程序?

java - 尝试在 Android 中将文件写入 sdcard 时出现 FileNotFoundException(权限被拒绝)

java - 通常,当java返回 "The parameter is incorrect"时,这意味着什么