你好,
这是一些将数据类写入文件的代码,然后检查文件是否存在.我可以看到该文件存在于模拟器上,但file.exists()因此saveStateAvailable()返回false.
private void saveStateFile() {
/*DEBUG*/Log.d(this.getClass().getName(), "saveStateFile: Started");
mGameData = getGameData();
try {
FileOutputStream fileoutputstream = openFileOutput(mGameData.pilotName + STATE_FILE_EXTENSION, Context.MODE_WORLD_WRITEABLE);
ObjectOutputStream objectoutputstream;
objectoutputstream = new ObjectOutputStream(fileoutputstream);
objectoutputstream.writeObject(mGameData);
objectoutputstream.close();
fileoutputstream.close();
/*DEBUG*/Log.i(this.getClass().getName(), "saveStateFile: State saved to "+mGameData.pilotName + STATE_FILE_EXTENSION);
} catch (IOException e) {
/*DEBUG*/Log.e(this.getClass().getName(), "saveStateFile: Error writing data state file, "+mGameData.pilotName + STATE_FILE_EXTENSION);
e.printStackTrace();
}
/*DEBUG*/Log.d(this.getClass().getName(), "saveStateFile: Finished stateFileAvailable="+stateFileAvailable());
}
private boolean stateFileAvailable() {
File file = new File(mGameData.pilotName + STATE_FILE_EXTENSION);
/*DEBUG*/Log.d(this.getClass().getName(), "stateFileAvailable: Called ("+mGameData.pilotName + STATE_FILE_EXTENSION+" exists = "+file.exists()+")");
return file.exists();
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
-Frink
您需要使用Context#getFileStreamPath(String)其中String是的文件名File,你试图访问对象.然后你可以调用File#exists那个对象.所以:
File file = getFileStreamPath(mGameData.pilotName + STATE_FILE_EXTENSION);
Run Code Online (Sandbox Code Playgroud)
使您可以访问File指向私有应用程序存储区域中正确位置的对象.
您的代码将要访问的是访问/<your file name>根路径上的文件.你的文件显然不存在.
| 归档时间: |
|
| 查看次数: |
4787 次 |
| 最近记录: |