2013-03-21 65 views
0

我想检查我的/assets/game/目录中是否有文件level.xml,如果它不存在,我想创建它。我用这个代码:Android和LibGDX:在本地存储中创建XML文件

private static void LoadXML() { 
     ProgressFileHandle = Gdx.files.local("game/level.xml"); 
     if (!ProgressFileHandle.exists()) { 
     try { 
      ProgressFileHandle.file().createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     } else ProgressFileHandle.file().readString(); 
} 

此代码不能正常工作,我得到的错误:

java.io.IOException: No such file or directory

它的工作原理,如果我改变 Gdx.files.local("assets/game/level.xml");Gdx.files.local("level.xml");但我不明白为什么。如何在子目录中创建此文件(assets/game)?

回答

3

我不清楚您是否希望从您的游戏随附的标准assets文件夹中读取。在这种情况下,您应该使用Gdx.files.internal()进行读取,但assets文件夹在Android上始终是只读的。

如果要在Libgdx“本地存储”(相当于Android internal storage)中创建名为assets/的另一个目录,则需要创建目录,然后才能在新目录中创建文件。只需在文件句柄上调用.mkdirs()以确保创建所有必需的父目录。

ProgressFileHandle.file().mkdirs(); 
ProgressFileHandle.file().createNewFile(); 
+1

我试图保存'Gdx.files.external( “路径/到/文件”)'外部文件,只好用'getParentFile()''之前mkdirs()'或文件将也是一个目录。 在OP的情况将是:。 'ProgressFileHandle.file()getParentFile()mkdirs();'' ProgressFileHandle.file()createNewFile();' 参考文献[这里](HTTP:/ /stackoverflow.com/a/15212890/1136409)。 – nils 2013-09-03 21:28:55