我试图在内部专用存储区(应用程序用户首选项)上的简单文本文件中保存我的应用程序中的一些数据。我已经阅读了很多关于这里的问题(StackOverflow),并尝试了一些建议没有成功的解决方案。最简单的解决方案似乎是这里建议的解决方案:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
但我无法在我的测试设备上工作。我也尝试用适当的方法使用java.io.File中可用的方法创建文件。我也尝试在SD卡上创建具有相同结果的文件,失败。我已经尝试了许多其他解决方案中列出的解决方案,遵循准确建议的代码和说明并找到相同的结果。我开始觉得我缺少一些代码重要的一点,或设置标志的地方,我已在清单文件的权限:
在Android中写入内部专用存储
<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);
我运行在HTC Hero的代码,与Sprint的最新的服务版本更新。任何帮助将非常感谢,提前致谢!
史蒂夫
更新(11年2月2日):使用EVO(API 8)我仍然得到一个NullPointerException。生成异常的代码如下,对于为什么我的应用程序无法访问内部存储的任何想法?我在使用两个API级别(API 7和8)的三种不同物理设备上遇到此问题。
File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");
更新2:11年2月4日 - 我发现我看不到在任何情况下对物理设备(数据目录)的文件结构。任何人对此有任何想法?该设备已正确配置,并可以从eclipse或adb运行应用程序。
更新3:(2/9/11) - 我想我可能已经发现问题在这里,但我不知道如何处理它。我发现物理设备上/ data /目录的权限是:drwxrwx--x
。我不确定为什么会这样,也许是Sprint的一些东西?我发现HTC Hero,三星Epic(Galaxy S)和HTC EVO在Sprint上都是这样设置的。这个问题似乎是DDMS和我的应用程序没有r/w访问目录。我需要在这里弄清楚两件事情,为什么它是这样以及如何在野外过度解决这个问题。再次,这里的任何帮助将是真棒!
更新4:我认为去年2月对我来说是一个完整的金发时刻(见更新3)。我拥有的测试设备没有ROOT,因此无法访问(DUH!)。经过SGS和EVO 4G所经历的所有更新后,结果仍然相同。我仍然在解决这个问题,并会尽快回到这里(希望下次不到一年)。
当您尝试使用这些不同的方法时,您是否收到错误消息,还是只是默默地失败? – 2011-01-27 18:11:25
我现在专注于`openFileOutput()`方式,并且我得到一个NullPointerException。看起来手机上的私人数据目录由于某种原因被锁定,我甚至无法查看目录;它像没有创造那里。手机上'data'目录的权限为:“drwxrwx - x”。我开始怀疑电话上是否存在无效设置或其他问题。为了兼容性,数据文件写入内部存储是应用程序的一项要求。 – Kingsolmn 2011-01-27 19:58:47
除非您有root用户访问权限,否则您将无法使用DDMS访问物理设备上的/ data目录,但仍应能够从应用程序写入文件。模拟器上会发生什么?你能写一个文件吗? – techiServices 2011-02-18 08:44:14