簡體   English   中英

LibGDX isDirectory()返回false,即使它是目錄

[英]LibGDX isDirectory() returns false even though it is a directory

我目前正在嘗試獲取目錄中的文件列表。 當我嘗試獲取目錄的文件句柄時,它說它是一個文件,但不是。 然后,當我從中readString()時,它返回其中文件的文件名。 這僅在IDE(Eclipse NEON.2)中發生,但是當我導出到JAR時,當我嘗試運行時會崩潰。

如何使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

終端輸出

真正

線程“ LWJGL應用程序”中的異常java.lang.NullPointerException
在java.io.FilterInputStream.read(未知來源)
在sun.nio.cs.StreamDecoder.readBytes(未知來源)
在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)
在dev.thomaslienbacher.simplegame.controllers.EnemyManager.loadAssets(EnemyManager.java:33)
在dev.thomaslienbacher.simplegame.scene.GameScene.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.mainLoop(LwjglApplication.java:223)
在com.badlogic.gdx.backends.lwjgl.LwjglApplication $ 1.run(LwjglApplication.java:124)

我在資產list -> enemy創建了嵌套文件夾,然后在敵人文件夾中保留了三個.png文件,它們的名稱分別為1.png2.png3.png

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 Run選項卡上輸出:

真正
真正
列表/敵人/ 1.png
列表/敵人/ 2.png
列表/敵人/ 3.png

IDE本地Terminal上沒有任何輸出。 我的IDE是Intellij IDEA ,希望結果與其他IDE相同。

那是我的預期輸出。

FileHandle的readString()使用平台的默認字符集將整個文件讀取為字符串,並且如果文件句柄表示一個目錄,不存在或無法讀取,則拋出GdxRuntimeException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM