哈o
这是一些将数据类写入文件的代码,然后检查该文件是否存在.我可以看到该文件存在于模拟器上,但是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();}
有任何想法吗?
-皱纹
解决方法:
您需要使用Context#getFileStreamPath(String)
,其中字符串是您尝试访问的file对象的文件名.然后,您可以在该对象上调用file#exists.所以:
file file = getfileStreamPath(mGameData.pilotname + STATE_file_EXTENSION);
使您可以访问file对象,该对象指向私有应用程序存储区域中的正确位置.
您的代码将要执行的 *** 作是访问文件/<您的文件名>.在根路径上.您的文件显然不存在.
总结以上是内存溢出为你收集整理的Android file.exists()无法正常工作全部内容,希望文章能够帮你解决Android file.exists()无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)