我的文件位于My/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)
someClass.getResource
解析路径相对于someClass
位置。将文件移动到PATH_TO_THIS_CLASS_PATH/Menus/CharSelect/unlock .txt,操作必须成功