18

そのため、ファイル handle.list() メソッドを使用してディレクトリ内のファイルのリストを取得しようとしていますが、ディレクトリ内にファイルがあっても空のリストを返します。私には奇妙に思えますが、デバイスでは機能しますが、デスクトップでは機能しません。問題が何であるかはわかっていると思いますが、それを解決する方法はわかりません。メソッドの説明に「デスクトップでは、クラスパス上のディレクトリへの FileType.Internal ハンドルは、長さゼロの配列を返す」とありますが、これ以外に方法がないので、どうすればよいと思いますか?

4

1 に答える 1

23

「内部ファイル」は、デスクトップで実行するとクラスパスを介して検出されるため、クラスパス内のディレクトリを「リスト」する簡単な方法はありません。開発用にデスクトップを使用しているだけで、いくつかのハックを気にしない場合は、不足しているファイルを「./bin/」で検索できます。

このような:

FileHandle dirHandle;
if (Gdx.app.getType() == ApplicationType.Android) {
   dirHandle = Gdx.files.internal("some/directory");
} else {
  // ApplicationType.Desktop ..
  dirHandle = Gdx.files.internal("./bin/some/directory");
}
for (FileHandle entry: dirHandle.list()) {
   // yadda ...
}

もう少し詳細については、http: //bitiotic.com/blog/2012/05/15/libgdx-internal-files-hacks/を参照してください。

更新:これはもはや正しくありません。その「./bin/」パスプレフィックスを追加する必要はありません-追加しなくてもうまく機能し、追加しても機能しません。したがって、このソリューションは時代遅れです。

于 2012-10-01T23:53:48.543 に答える