Android程序写入模拟器但不写入手机

时间:2012-10-31 02:59:17

标签: java android

我正在尝试编写一个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中打开数据文件夹,则表明它是一个空目录。我已经在这行中添加了我的清单:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我似乎无法想到任何其他我可能做错的事情。在此先感谢您的帮助,我们对此表示赞赏。

2 个答案:

答案 0 :(得分:0)

您的代码一切正常,您在手机中看不到该文件的唯一原因是:您的手机不是Root!根你的手机,然后只需使用RootExplorer(或任何其他应用程序)也看到你的结果与模拟器在同一目录!旁边这个为什么不打印文本?确保在fos.close()之后创建文件,添加bufferReader并尝试将数据放入String然后打印它!然后你可以在LogCat中看到结果

答案 1 :(得分:0)

您的代码很好,但正如其他人所说的那样,Eclipse中的DDMS没有对内部存储的正确访问,这是/ data / data所在的位置。您可以在http://developer.android.com/guide/topics/data/data-storage.html

找到对不同类型的Android存储的引用

获取访问权限的一种方法是根设备。

另一种方法是安装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