Java LibGDX isDirectory()返回false,即使它是一个目录
我目前正在尝试获取目录中的文件列表。 当我试图获取目录的文件句柄时,它会说它是一个文件,但它不是。然后,当我从中读取Java LibGDX isDirectory()返回false,即使它是一个目录,java,file-io,libgdx,Java,File Io,Libgdx,我目前正在尝试获取目录中的文件列表。 当我试图获取目录的文件句柄时,它会说它是一个文件,但它不是。然后,当我从中读取readString()时,它返回其中文件的文件名。这只发生在IDE(EclipseNeon.2)中,但当我导出到JAR时,当我尝试运行时,它会崩溃 如何让LibGDX将其识别为目录并获取该目录中的所有文件。最后一件事是,我看到许多Anwer说list()在桌面上不起作用,但我也读到它起作用。有人能检查一下这是不是真的吗 public void loadEnemyBaseTypes
readString()
时,它返回其中文件的文件名。这只发生在IDE(EclipseNeon.2)中,但当我导出到JAR时,当我尝试运行时,它会崩溃
如何让LibGDX将其识别为目录并获取该目录中的所有文件。最后一件事是,我看到许多Anwer说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]);
}
public void loadEnemyBaseTypes(){
ArrayList-enemyBaseFiles=新建ArrayList();
FileHandle enemyBaseDirectory=
Gdx.files.internal(“原型/enemybase”);
System.out.println(enemyBaseDirectory.exists());
System.out.println(enemyBaseDirectory.isDirectory());
String[]filename=enemyBaseDirectory.readString().split(“\n”);
对于(int i=0;i
IDE输出:
正确假
基础0.enybse
基础1.enybse
碱基2.enybse
基础3.enybse
基础4.enybse
基_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.gamesene.loadAssets(gamesene.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)
我在Assets
list->friend
中创建了嵌套文件夹,然后在friend文件夹中保留了三个名为1.png
、2.png
和3.png
的.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
选项卡:
truetrue
列表/敌人/1.png
列表/敌人/2.png
列表/敌人/3.png IDE本地
终端上没有任何输出。我的IDE是IntellijIDEA
,希望在其他IDE上的结果应该是相同的
这是我的预期产出
FileHandle的readString()
使用平台的默认字符集将整个文件读入字符串,如果文件句柄表示目录、不存在或无法读取,则抛出GdxRuntimeException
您在哪个平台上运行?对我来说,在Windows上,内部文件句柄上的list()
返回一个空数组,正如基于该方法的Javadocs所预期的那样。我用Intellij IDEA尝试了Windows和Mac,它给了我一个非零长度数组。根据文档,它应该是一个零长度数组,所以我尝试了EclipseNeon.3,然后得到了零长度数组。为什么有些IDE给我非零长度数组?