3

ユーザーが作成できるレベルをローカルマシンに保存するJavaアプレット/アプリケーションゲームを作成しました。アプリケーションまたはアプレットとして実行できるため、アプレット/アプリケーションと言います。現在、私はこれを使用してファイルを作成しています。

BufferedWriter bf = new BufferedWriter(new FileWriter("Circles/levels/level.txt"));
for (int i = 0; i < lines.size(); i++) {
    bf.write(lines.get(i));
    bf.newLine();
}

linesは、ファイルに書き込む行を含む配列リストです。

FileReader fr = new FileReader("Circles/levels/level.txt");
        BufferedReader bf = new BufferedReader(fr);
        lines = new ArrayList<String>();
        while (true) {
            String line = bf.readLine();
            if (line == null) {
                break;
            }
            lines.add(line);
        }
        bf.close();

ファイルを読み取ります。それらはtry/catchループに囲まれています、私は私がしなければならないことを示しているだけです。

これは問題なく動作しますが、オペレーティングシステムごとにまったく異なる場所にあるようで、アプリケーションはアプレットとは異なる場所に保存されます。

Javaプログラムをどこから実行しても変わらないレベルを保存する場所への絶対パスを取得する方法が欲しいのですが、アプリケーションとしてもアプレットとしても同じです。また、これがすべてのオペレーティングシステム(Linux、Windows、Mac)で機能するようにすると便利です。

4

1 に答える 1

6

アプレットがデータを保存する場所はまったくないため、アプレットとして実行する場合は、非常に簡単にそれを回避する必要があります。アプレットサンドボックスは、ファイルシステムへのアクセスを完全に防ぎます。代わりに、サーバーを呼び出してデータを保存する必要があります。

スタンドアロンアプリケーションに関しては、完全に一般的に受け入れられる規則がないことも申し訳ありません。ただし、ユーザーのホームディレクトリにドットファイルディレクトリを作成することは、Linux、OSX、およびWindowsの両方で許容できる方法と見なされることがよくあります。

public static final File savedir = new File(new File(System.getProperty("user.home")), ".yourgame");

次に、そこからファイル名を導き出します。

FileReader fr = new FileReader(new File(savedir, "level.txt"));

それは機能しますが、Windowsプログラムが通常行うこととは異なります。

于 2013-01-01T02:25:07.973 に答える