【问题标题】:Java FileInputStream can't find file (LibGDX)Java FileInputStream 找不到文件 (LibGDX)
【发布时间】:2012-12-09 20:58:39
【问题描述】:

所以我有这门课:

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 提前谢谢你。

【问题讨论】:

    标签: java libgdx bufferedreader


    【解决方案1】:

    如果您从路径为$DIR 的目录运行Java 程序,则输入文件应位于$DIR/assets/data/lvls/example.txt。根据您收到的异常情况,此位置不存在输入文件。

    我建议您首先尝试在代码中使用输入文件的绝对路径。然后,找出它的相对路径是什么。

    【讨论】:

    • 那么绝对路径应该来自 OS-Home 文件夹?
    • 在 Linux 中,它将以“/”开头,而在 Windows 中,则以驱动器名称开头,例如,“C:”。
    【解决方案2】:

    我也遇到过这个问题。为了使用 LibDGX 从您的资产目录中读取文件,您必须使用 LibGDX 方法替换:

    new FileInputStream("SomeFile.txt")
    

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

    假设“someFile.txt”在您的资产根文件夹中。

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2019-04-14
      • 2014-08-24
      相关资源
      最近更新 更多