我目前正在尝试获取目录中的文件列表。
当我尝试获取目录的文件句柄时,它说它是一个文件,但它不是。当我从它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
终端输出:
真
假
线程&#34; LWJGL应用程序&#34;显示java.lang.NullPointerException
在java.io.FilterInputStream.read(未知来源)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
在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)
答案 0 :(得分:0)
我在资产list -> enemy
中创建了嵌套文件夹,然后我将三个.png
文件保存在名为1.png
,2.png
和3.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&#39; readString()
使用平台的默认字符集将整个文件读入字符串,如果文件句柄代表目录,则不存在,或者无法读取抛出GdxRuntimeException
。