1

私のアプリケーションは主にc++(NDKを使用)であるため、、fopenなどfwriteの標準関数を使用して、ファイルを作成してゲームに保存し、それらに書き込みます。

を使用するfopen("game.sav", "wb")と、パスで作成されているように見えます

/data/user/10/com.my.game/files/game.sav

私のアプリはマルチユーザーです。そのため、ユーザーが保存ファイルを保存するフォルダーを別にしたいと思います。上記のパスの代わりに、次のようなパスが必要です

/data/user/10/com.my.game/files/user0/game.sav

/data/user/10/com.my.game/files/user1/game.sav、など

私のアプリのフロントエンドはJavaであり、新しいユーザーを登録するときに、フォルダーを作成したいと思います/data/user/10/com.my.game/files/user0/。しかし、私はそれを行う方法がわかりません。

final File newDir = context.getDir("user0", Context.MODE_PRIVATE);

その結果、別のパスでパスが作成され/data/user/10/com.my.game/app_user0ます。

で、どのようにフォルダを作成することが可能/data/user/10/com.my.game/files/ですか?

4

1 に答える 1

3

それを行う簡単な方法、このコードは多くの条件に合わせて変更できます。パスがgetFilesDir()で取得するパスと異なることがわかっている場合は、最初に、知っているパスを使用してファイルを作成できます。コードの最後の2行は同じです。

    File file = this.getFilesDir(); // this will get you internal directory path
    Log.d("BLA BLA", file.getAbsolutePath());
    File newfile = new File(file.getAbsolutePath() + "/foo"); // foo is the directory 2 create
    newfile.mkdir();

また、「ファイル」ディレクトリへのパスがわかっている場合は、次のようになります。

     File newfile2 = new File("/data/data/com.example.stackoverflow/files" + "/foo2");
    newfile2.mkdir();

どちらのコードも機能します。

プルーフオブワーク:

プルーフオブワーク:

于 2013-01-22T10:46:24.423 に答える