我正在尝试编写一个 Android 程序来接受输入,然后将数据写入手机内部存储器上的一个文件。当我在模拟器上执行我的程序时,它会像我期望的那样生成一个文件,但是当我尝试在我的手机上执行它时,文件似乎没有被创建。我在这个网站上环顾四周,似乎无法在任何地方找到解决我的问题的方法(一些类似的,但没有对我有用)我希望你们能够就我的问题向我提供建议做错了。
FileOutputStream fos = null;
String x = "Sample String";
try{
fos = openFileOutput("answers.txt", MODE_PRIVATE);
fos.write(x.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
在模拟器上,我可以在“data/data/com.example.helloandroid/files/answers.txt”中找到 DDMS 中的文件。在电话上,如果我尝试在 DDMS 中打开数据文件夹,它会显示它是一个空目录。我已经将这一行添加到我的 list 中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我似乎想不出还有什么我可能做错的。在此先感谢您的帮助,不胜感激。
最佳答案
您的代码很好,但正如其他人所说,Eclipse 中的 DDMS 无法正确访问内部存储,而内部存储是/data/data 所在的位置。您可以在 http://developer.android.com/guide/topics/data/data-storage.html 找到对不同类型 Android 存储的引用。
获得访问权限的一种方法是对您的设备进行 root。
另一种方法是安装 userdebug 版本。
然而,最简单的方法是通过 adb 的未记录的 run-as
选项.这允许您访问您的应用拥有的文件,即使它们在内部存储中也是如此。
要验证是否正在创建您感兴趣的文件,请在命令行中输入:
adb shell run-as com.example.helloandroid ls -l /data/data/com.example.helloandroid/files/
要获取特定文件的内容,也可以在命令行中输入:
adb shell run-as com.example.helloandroid cat /data/data/com.example.helloandroid/files/answers.txt
关于java - Android程序写入模拟器而不是手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13150659/