2017-04-18 7 views
0

現在、ディレクトリ内のファイルのリストを取得しようとしています。 ディレクトリのファイルハンドルを取得しようとすると、それはファイルであると言われますが、そうではありません。私はそれからreadString()を取得すると、そのファイルのファイル名を返します。これはIDE(Eclipse NEON.2)でのみ発生しますが、JARにエクスポートすると、実行しようとするとクラッシュします。LibGDX isDirectory()がディレクトリであってもfalseを返します

LibGDXをディレクトリとして認識し、そのディレクトリ内のすべてのファイルを取得する方法を教えてください。最後に私は多くの人に、list()がデスクトップでは動作しないと言っているのを見たことがありますが、それが動作することも読んでいます。これが本当であるかどうか誰かが確認できますか?

public void loadEnemyBaseTypes(){ 
    ArrayList<FileHandle> enemyBaseFiles = new ArrayList<FileHandle>(); 
    FileHandle enemyBaseDirectory = 
     Gdx.files.internal("prototypes/enemybases"); 

    System.out.println(enemyBaseDirectory.exists()); 
    System.out.println(enemyBaseDirectory.isDirectory()); 

    String[] fileNames = enemyBaseDirectory.readString().split("\n"); 

    for(int i = 0; i < fileNames.length; i++) 
     System.out.println(fileNames[i]); 
} 

IDE出力



base_0.enybse
base_1.enybse
base_2.enybse
base_3.enybse
base_4.enybse
base_5 .enybse

ターミナル出力:java.io.FilterInputStream.readのスレッド "LWJGLアプリケーション" java.lang.NullPointerExceptionが



例外(不明なソース)
at sun.nio.cs.StreamDecoder.readBytes(不明なソース)
at sun.nio.cs.StreamDecoder.implRead(不明なソース)sun.nio.cs.StreamDecoder.read(不明なソース)java.io.InputStreamReader.readで
(不明なソース)java.io.Reader.readで
(不明なソース)で com.badlogicで
.gdx.files.FileHandle.readString(FileHandle.java:207)com.badlogic.gdx.files.FileHandle.readStringで
(FileHandle.java:191)dev.thomaslienbacher.simplegame.controllers.EnemyManager.loadEnemyBaseTypesで
(EnemyManager.java:53)
at dev.thomaslienbacher.simplegame.controllers.EnemyManager.loadAssets(EnemyManager.java:33)
at dev.thomaslienbacher.simplegame.scene.GameS cene.loadAssets(GameScene.java:62)dev.thomaslienbacher.simplegame.Game.update(Game.java:149)で
dev.thomaslienbacher.simplegame.Game.renderで
(Game.java:134)
com.badlogic.gdx.backends.lwjgl.LwjglApplication $の1.run(LwjglApplication.java:124)

でcom.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:223)で

答えて

0

資産list -> enemyの中にネストしたフォルダを作成した後、1.png2.png、の敵フォルダ内に3つの.pngファイルを保存します。



リスト/敵/ 1.png
リスト/敵/ 2.png
リスト/敵/ 3.png

:IDE Runタブの

FileHandle enemyBaseDirectory = Gdx.files.internal("list/enemy"); 

System.out.println(enemyBaseDirectory.exists()); 
System.out.println(enemyBaseDirectory.isDirectory()); 

FileHandle allList[]=enemyBaseDirectory.list(); 

for (FileHandle fileHandle:allList) 
    System.out.println(fileHandle); 

出力

IDEローカルTerminalには出力がありません。私のIDEはIntellij IDEAです。うまくいけば結果は他のIDEでも同じでなければなりません。

これは私の予想される出力です。

FileHandleのreadString()は、プラットフォームのデフォルト文字セットを使用してファイル全体を文字列に読み込み、ファイルハンドルがディレクトリを表しているか、存在しないか、読み取れなかった場合はGdxRuntimeExceptionをスローします。

+0

どのプラットフォームを実行していますか? Windowsの私にとっては、内部FileHandle上の 'list()'は、メソッドのJavadocに基づいて期待どおり空の配列を返します。 – Tenfour04

+0

私はWindowsとMacの両方でIntellij IDEAを試してみました。私はEclipse Neon.3を試してみました。そして、私は長さがゼロの配列を持っていました。なぜいくつかのIDEが私に長さゼロの配列を与えないのですか? – Aryan

関連する問題