2017-04-18 1 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) dev.thomaslienbacher.simplegame.controllers.EnemyManager.loadAssets에서
(EnemyManager.java:33) 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.mainLoop (LwjglApplication.java:223) com.badlogic.gdx.backends.lwjgl.LwjglApplication $의 1.run에서
(LwjglApplication.java:124)에서

답변

0

자산 list -> enemy 안에 중첩 된 폴더를 생성 한 후 1.png, 2.png 및라는 적 폴더 내에 3 개의 .png 파일을 보존합니다..IDE에

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); 

출력 Run 탭 :

사실
사실
목록/적/1.png
목록/적/2.png
목록/적/3.png

IDE 로컬 Terminal에는 출력이 없습니다. 내 IDE는 Intellij IDEA입니다. 결과는 다른 IDE에서도 같아야합니다.

내 예상되는 출력입니다.

FileHandle의 readString()은 플랫폼의 기본 charset을 사용하여 전체 파일을 문자열로 읽고 파일 핸들이 디렉토리를 나타내거나 존재하지 않거나 읽을 수없는 경우 GdxRuntimeException을 던집니다.

+0

실행중인 플랫폼은 무엇입니까? Windows의 경우, 내부 FileHandle의'list()'는 메서드의 Javadoc에 따라 예상대로 빈 배열을 반환합니다. – Tenfour04

+0

Intellij IDEA를 사용하여 Windows와 Mac을 모두 시도했지만 길이가 0이 아닌 배열을 제공합니다. doc에 따르면 길이가 0 인 배열이므로 Eclipse Neon.3을 시도한 다음 길이가 0 인 배열을 얻었습니다. 왜 일부 IDE가 길이가 0이 아닌 배열을 제공합니까? – Aryan

관련 문제