Java FileInputStream не может найти файл (LibGDX)

Итак, у меня есть этот класс:

http://pastebin.com/EwXFwuZz

И это дерево каталогов: http://s14.directupload.net/file/d/3099/uskko5mo_png.htm

И я работаю с LibGDX Framework над этим проектом. Это в основном моя проблема:

У меня есть файл, который содержит информацию об уровне в «фрагментах». Каждая строка представляет собой один фрагмент. Я хочу прочитать строку файла за строкой. К сожалению, встроенная система FileHandling LibGDX не поддерживает построчное чтение, поэтому я решил придерживаться стандартного 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", но для компиляции запускаю "Main" в "CuteGameXVII-desktop". Папки ресурсов связаны через eclipse и до сих пор работали для других ресурсов.

Я пропустил что-то супер очевидное здесь? Если это так, пожалуйста, помогите мне: P Заранее спасибо.


person AreusAstarte    schedule 09.12.2012    source источник


Ответы (2)


Если вы запускаете программу Java из каталога с путем $DIR, входной файл должен находиться по адресу $DIR/assets/data/lvls/example.txt. Судя по полученному вами исключению, входной файл не существует в этом месте.

Я бы посоветовал вам сначала попробовать использовать абсолютный путь к входному файлу в вашем коде. Затем выясните, каков относительный путь к нему.

person reprogrammer    schedule 09.12.2012
comment
Таким образом, абсолютный путь будет из папки OS-Home? - person AreusAstarte; 10.12.2012
comment
В Linux он будет начинаться с /, а в Windows — с имени диска, например, C:. - person reprogrammer; 10.12.2012

Я тоже столкнулся с этой проблемой. Чтобы прочитать файл из вашего каталога ресурсов с помощью LibDGX, вы должны использовать метод замены LibGDX:

new FileInputStream("SomeFile.txt")

by

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

предполагая, что «someFile.txt» находится в корневой папке вашего ресурса.

person Julien    schedule 02.04.2016