2012-12-09 23 views
1

所以我有這個類:的Java的FileInputStream無法找到文件(LibGDX)

http://pastebin.com/EwXFwuZz

而這個目錄樹: http://s14.directupload.net/file/d/3099/uskko5mo_png.htm

而且我與LibGDX框架這方面的工作項目。這基本上是我的問題:

我有一個文件包含「塊」中的級別信息。每一行都是一個塊。我想讀取每行的文件行。不幸的是,內置的LibGDX FileHandling系統不支持逐行閱讀,所以我認爲堅持股票的Java。

但是我得到這個「FileNotFound」異常:

java.io.FileNotFoundException: ./assets/data/lvls/example.txt (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) 
    at java.io.FileReader.<init>(FileReader.java:55) 
    at gemini.cute.game.xvii.database.LevelReader.<init>(LevelReader.java:49) 
    at gemini.cute.game.xvii.core.MainLauncher.create(MainLauncher.java:40) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:124) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:107) 

隨着LibGDX被發現,但讀成一個單一的巨大字符串的文件。由於某種原因,使用相同的路徑(即使從根目錄),文件沒有找到。

對於不熟悉LibGDX的人我正在編寫上面的「CuteGameXVII」項目,但編譯時我在「CuteGameXVII-desktop」中運行「Main」。這些資產文件夾通過eclipse鏈接,並且可以用於其他資源。

我在這裏錯過了一些超級明顯的東西嗎?如果是這樣,請幫助我:P預先感謝您。

回答

3

如果您從路徑爲$DIR的目錄運行Java程序,則輸入文件應爲$DIR/assets/data/lvls/example.txt。根據您收到的例外情況,輸入文件不存在於此位置。

我建議你先在代碼中嘗試使用輸入文件的絕對路徑。然後,找出它的相對路徑是什麼。

+0

那麼絕對路徑將來自OS-Home文件夾? – AreusAstarte

+0

在Linux中,它將以「/」開頭,在Windows中以驅動器名稱開頭,例如「C:」。 – reprogrammer

2

我也遇到過這個問題。爲了從您的資產目錄中讀取一個文件LibDGX必須使用LibGDX方法代替:

new FileInputStream("SomeFile.txt") 

通過

Gdx.files.internal("SomeFile.txt").read() 

假設「someFile.txt」是在資產的根文件夾。