重新读取libgdx中的内部文件

时间:2014-06-14 12:19:34

标签: android libgdx directory

我正在使用libgdx函数Gdx.files.internal读取文件。该文件位于Android的文件夹资产中。一旦在桌面上启动应用程序,我就会更改文件并重新读取它。但它不起作用。我的意思是,应用程序读取旧文件,虽然我只是更改了它。这是代码块

public Scenario getScenario(String scenarioName)
{
    FileHandle f = Gdx.files.internal(scenarioName);
    return new Scenario(new BufferedReader(new InputStreamReader(f.read())));
}

有人知道Gdx.files.internal为什么还在读旧文件吗?当然,一旦我停止应用程序并重新启动它,就会读取新文件。这里有什么问题?

任何提示都会非常感激。

2 个答案:

答案 0 :(得分:3)

Gdx内部文件是只读的。这就是为什么当你再次阅读它时,你会再次得到相同的数据 如果您想要一个可以读取和写入的文件,则需要使用本地或外部。 文档类型将更详细地解释here

如果要在Android资源文件夹中提供初始版本,可以在应用启动时将其复制到本地,然后从该点开始使用本地文件。换句话说:

public void create() {
    ...
    FileHandle internalFile = Gdx.files.internal(scenarioName);
    internalFile.copyTo(Gdx.files.local(scenarioName);
}

答案 1 :(得分:1)

通过类路径找到Libgdx“内部”文件(请参阅FileHandle.java中对getResourceAsStream的调用)。在Android上,这些是只读的,因为它们打包在JAR中,无法就地修改(JVM不支持)。

我有点惊讶,桌面版本不只是通过调用本地文件系统。这或者意味着当你运行它时,应用程序是在JAR中打包的(你运行的是打包版本,还是从Eclipse运行开发版本?),或者有一个ClassLoader可以缓存这些vaules。

另见Reloading resources loaded by getResourceAsStream