所以我正在开发游戏,我需要帮助我的文件i / o for savefiles。目前我有类似这样的设置来读取它们:
public static void savesManagementMenu() {
for (int i = 1; i < 4; i++) {
fileURL = JRPG.class.getResource("Saves/save" + i + ".txt");
System.out.println(fileURL);
if (fileURL != null) {
saveMenuSaveFile = new File(fileURL.getPath());
try {
//System.out.println("File # " + i +" exists.");
saveMenuSaveFileReader = new FileReader(fileURL.getPath());
saveMenuFileScanner = new Scanner(saveMenuSaveFileReader);
saveMenuInfo[i - 1][0] = saveMenuFileScanner.nextLine();
saveMenuFileScanner.nextLine();
saveMenuFileScanner.nextLine();
saveMenuFileScanner.nextLine();
saveMenuInfo[i - 1][1] = saveMenuFileScanner.nextLine();
saveMenuInfo[i - 1][2] = saveMenuFileScanner.nextLine();
} catch (FileNotFoundException ex) {
Logger.getLogger(JRPG.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
saveMenuInfo[i - 1][0] = null;
}
}...
使用Netbeans中的此方法运行/编译将使应用程序/游戏看起来像E:\ Copy \ JRPG \ build \ classes \ jrpg \ Saves。&#34;
当我清理并构建项目,并尝试通过命令行运行它时,我得到这样的响应:
jar:file:/C:/Users/Adam/Desktop/New%20folder/JRPG.jar!/jrpg/Saves/save1.txt
2013年8月22日11:54:18 PM jrpg.JRPG savedManagementMenu 严重:空 java.io.FileNotFoundException:file:\ C:\ Users \ Adam \ Desktop \ New%20folder \ JRPG.jar !\ jrpg \ Saves \ save1.txt(文件名,目录名或卷标语法是 不正确的)
游戏就冻结了。我运行编译代码时希望它查看的保存的文件路径是:C:\ Users \ Adam \ Desktop \ New folder \ Saves
哪个是相对文件路径对吗?我如何解决这个问题,以便无论我在哪里运行文件,我的编译代码都在正确的位置? (让我们说我的朋友想要从他的电脑上运行游戏,除非他把&#34;新文件夹&#34;文件夹放在桌面以外的地方)
答案 0 :(得分:0)
嵌入资源不是File
,不能视为一个。此外,就输出文件而言,您不应该试图在应用程序中保存...
相反,要么将文件保存到应用程序的相对位置......
File saveMenuSaveFile = new File("./Saves/save" + i + ".txt");
或者到用户主目录......
String userHome = System.getProperty("user.home");
File saveMenuSaveFile = new File(userHome + "/.YouApplicationName/Saves/save" + i + ".txt");