Java Android程序写入模拟器但不写入手机
我正在尝试编写一个Android程序来接受输入,然后将数据写入手机内部存储器中的文件。当我在模拟器上执行我的程序时,它会生成一个我期望的文件,但当我尝试在手机上执行时,文件似乎没有被创建。我在这个网站上到处看看,似乎找不到解决我问题的方法(一些类似的方法,但对我来说没有任何效果),我希望你们能给我一些建议,说明我做错了什么Java Android程序写入模拟器但不写入手机,java,android,Java,Android,我正在尝试编写一个Android程序来接受输入,然后将数据写入手机内部存储器中的文件。当我在模拟器上执行我的程序时,它会生成一个我期望的文件,但当我尝试在手机上执行时,文件似乎没有被创建。我在这个网站上到处看看,似乎找不到解决我问题的方法(一些类似的方法,但对我来说没有任何效果),我希望你们能给我一些建议,说明我做错了什么 FileOutputStream fos = null; String x = "Sample String"; try{ fos = ope
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();
}
在emulator上,我可以在DDMS中的“data/data/com.example.helloandroid/files/answers.txt”中找到该文件。在手机上,如果我试图打开DDMS中的数据文件夹,它会显示它是一个空目录。我已经在我的清单中添加了这一行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我似乎想不出还有什么我可能做错的事。提前感谢您的帮助,非常感谢。您的代码一切正常,您无法在手机中看到文件的唯一原因是:您的手机不是Root!在手机上设置根目录,然后只需使用RootExplorer(或任何其他应用程序)即可在emulator所在的同一目录中查看结果!除此之外,为什么不打印文本?要确保文件是在fos.close()之后创建的,请添加bufferReader并尝试将数据放入字符串中,然后打印它!然后,您可以在LogCat中看到结果,您的代码很好,但正如其他人所说的那样,Eclipse中的DDMS无法正确访问内部存储,而内部存储正是/data/data所在的位置。您可以在以下位置找到不同类型Android存储的参考资料: 获取访问权限的一种方法是在设备上设置根目录 另一种方法是安装userdebug构建 但是,最简单的方法是通过的未记录的
运行方式选项。这允许您访问应用程序拥有的文件,即使这些文件位于内部存储器中
要验证是否正在创建您感兴趣的文件,请在命令行中键入:
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
要获取特定文件的内容,请在命令行中键入:
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
你不能访问你手机的内部目录,除非你是根目录。