我正在尝试将应用程序中的一些数据保存在内部私有存储区域(应用程序用户偏好)的简单文本文件中。我阅读了许多此处(StackOverflow)上的问题,并尝试了建议的解决方案,但没有成功。最简单的解决方案似乎是这里建议的:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
但是我无法在我的测试设备上使其工作。我还尝试使用java.io.File中可用的方法创建文件,并使用相应的方法创建文件。我还尝试在SD卡上创建文件,但结果也是失败。我尝试了许多列在其他答案中的解决方案,完全按照代码和指示进行操作,但结果仍然相同。我开始感到可能缺少一些重要的代码或设置标志,在清单文件中设置了权限:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
明确一下,我正在尝试写入设备的内部私有存储。这是一个包含姓名、电话号码和几个类型为int
的标志的小文件。无论我使用什么方法,我都发现文件没有创建(或者如果我手动将文件放在SD卡上,则不会更改),或者当我尝试引用文件或文件位置时,我得到一个NullPointerException:
private File fILE = new File("Mydata", main.FILENAME);
或者private File fILE = getDir("Mydata", 0);
我正在一台安装了Sprint的最新服务发布版本的HTC Hero上运行代码。非常感谢任何帮助,提前致谢!
- Steve
更新(2/2/11):在使用EVO(API 8)时,我仍然会得到NullPointerException。生成异常的代码如下,请问为什么我的应用程序无法访问内部存储器?我在两个API级别(API 7和8)中使用三个不同的物理设备都遇到了这个问题。
File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");
更新2:2/4/11 - 我发现在任何情况下都无法看到物理设备(数据目录)上的文件结构。有人对此有什么想法吗?设备已正确配置,并且可以从Eclipse或ADB运行应用程序。
更新3:(2/9/11)-我认为我可能已经找到了问题所在,但我不确定如何处理它。我已经弄清楚了物理设备上 /data/ 目录的权限是:drwxrwx--x
。我不确定为什么会这样,也许与Sprint有关?我发现在Sprint的HTC Hero、Samsung Epic(Galaxy S)和HTC EVO上都设置成这样。问题似乎在于DDMS和我的应用程序没有读/写访问权限。我需要解决两个问题,为什么会这样,以及如何在实际应用中克服这个问题。再次提醒,任何帮助都将非常棒!
更新4:我想去年二月份对我来说是个彻头彻尾的糊涂时刻(参见更新3)。我测试的设备没有ROOT权限,因此无法访问(傻瓜!)。尽管SGS和EVO 4G经历了所有更新,结果仍然是一样的。我仍在解决这个问题,并会尽快回来更新(希望下次不到一年)。
openFileOutput()
方法,但是我遇到了一个NullPointerException。似乎手机上的私有数据目录由于某种原因被锁定,我甚至无法查看该目录;就好像什么都没有创建一样。手机上“data”目录的权限为:“drwxrwx--x”。我开始怀疑手机上是否存在无效设置之类的问题。对于应用程序来说,数据文件必须写入内部存储器以实现兼容性。 - Kingsolmn