写入Android中的内部私有存储

Kin*_*lmn 12 android file-permissions

我试图在我的应用程序中保存内部私有存储区域(应用程序用户首选项)上的简单文本文件中的一些数据.我在这里阅读了很多问题(StackOverflow)并尝试了建议的解决方案但没有成功.看来,最简单的解决方案是这里建议的解决方案:

http ://developer.android.com/guide/topics/data/data-storage.html#filesInternal

但我无法在我的测试设备上使用它.我还尝试使用java.io.File中提供的方法和适当的方法创建该文件.我也尝试在SDCard上创建具有相同结果的文件,失败.我已经尝试了其他答案中列出的许多解决方案,遵循完全建议的代码和说明并找到相同的结果.我开始觉得我错过了一些重要的代码或某个设置标志,我在清单文件中设置了权限:

  <uses-permission 
        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)


为了清楚起见,我正在尝试写入设备的内部私有存储.它是一个包含姓名,电话号码和几个类型int标志的小文件.无论我使用什么方法,我发现文件没有创建(或者如果我手动将文件放在SDCard上,则更改),或者当我尝试引用文件或文件位置时,我得到NullPointerException:

private              File   fILE = new File("Mydata", main.FILENAME);
Run Code Online (Sandbox Code Playgroud)

要么

private              File   fILE  = getDir("Mydata", 0);
Run Code Online (Sandbox Code Playgroud)


我在HTC Hero上运行代码,更新了Sprint的最新服务版本.任何帮助将非常感谢,提前致谢!

史蒂夫

更新(2/2/11):使用EVO(API 8)我仍然得到NullPointerException.产生异常的代码如下,有关我的应用无法访问内部存储的原因的任何想法?我在使用两个API级别(API 7和8)的三个不同物理设备上遇到此问题.

    File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");
Run Code Online (Sandbox Code Playgroud)

更新2:2/4/11 - 我发现在任何情况下我都无法在物理设备(数据目录)上看到文件结构.有没有人对此有任何想法?设备已正确配置,可以从eclipse或adb运行应用程序.

更新3:(2/9/11) - 我想我可能已经找到了问题所在,但我不确定如何处理它.我已经发现物理设备上/ data /目录的权限是:drwxrwx--x.我不知道为什么会这样,也许与Sprint有关?我已经在Sprint的HTC Hero,三星Epic(Galaxy S)和HTC EVO上找到了这种方式.问题似乎是DDMS和我的应用程序没有r/w访问该目录.我需要弄清楚这里有两件事,为什么会这样,以及如何在野外解决这个问题.再次,这里的任何帮助将是真棒!

更新4:我认为去年2月对我来说是一个完美的金发时刻(见更新3).我拥有的测试设备没有ROOT,因此没有访问权限(DUH!).经过SGS和EVO 4G的所有更新后,结果仍然相同.我仍然在解决这个问题,并且很快就会尝试回到这里(希望下次不到一年).

小智 5

尝试更改以下行:

File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");
Run Code Online (Sandbox Code Playgroud)

至:

File newfile = new File(this.getFilesDir() + "/","sample.txt");
Run Code Online (Sandbox Code Playgroud)


dbm*_*dbm 4

不是对您问题的直接回答,但尽管如此:我注意到您不想在文件中存储大量数据。使用共享首选项是否是一个足够的替代方案?

也许更有趣的是:即使您写入共享首选项文件,问题也会发生吗?

http://developer.android.com/guide/topics/data/data-storage.html#pref