1

私はゲームに取り組んでいて、savefiles のファイル I/O について助けが必要です。現在、私はそれらから読み取るためのこのセットアップのようなものを持っています:

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" に表示されます。

プロジェクトをクリーンアップしてビルドし、コマンド ラインから実行しようとすると、次のような応答が返されます。

jar:file:/C:/Users/Adam/Desktop/New%20folder/JRPG.jar!/jrpg/Saves/save1.txt

2013 年 8 月 22 日 11:54:18 PM jrpg.JRPG savesManagementMenu SEVERE: null java.io.FileNotFoundException: file:\C:\Users\Adam\Desktop\New%20folder\JRPG.jar !\jrpg\Saves\save1. txt (ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません)

そして、ゲームはただフリーズします。コンパイルされたコードを実行するときに調べたい保存のファイル パスは、C:\Users\Adam\Desktop\New folder\Saves です。

相対ファイルパスはどれですか? ファイルをどこから実行しても、コンパイルされたコードが正しい場所に表示されるように、この問題を修正するにはどうすればよいですか? (私の友人が自分のコンピューターからゲームを実行したかったとしましょう。ただし、「新しいフォルダー」フォルダーをデスクトップ以外の場所に置きました)

4

1 に答える 1

0

埋め込みリソースは ではなく、File1 つとして扱うことはできません。また、出力ファイルに関しては、とにかくアプリケーション内に保存しようとするべきではありません...

代わりに、ファイルをアプリケーションの相対場所に保存します...

File saveMenuSaveFile = new File("./Saves/save" + i + ".txt");

またはユーザーのホームディレクトリに...

String userHome = System.getProperty("user.home");
File saveMenuSaveFile = new File(userHome + "/.YouApplicationName/Saves/save" + i + ".txt");
于 2013-08-23T04:12:02.123 に答える