2

我正在尝试编写一个 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();
    }

在模拟器上,我可以在 DDMS 中的“data/data/com.example.helloandroid/files/answers.txt”中找到该文件。在电话上,如果我尝试在 DDMS 中打开数据文件夹,它会显示它是一个空目录。我已经在我的清单中添加了这一行:

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

我似乎想不出还有什么我可能做错的事情。提前感谢您的帮助,不胜感激。

4

2 回答 2

0

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

于 2012-10-31T03:17:31.613 回答
0

您的代码很好,但就像其他人所说的 Eclipse 中的 DDMS 没有正确访问 /data/data 所在的内部存储。您可以在http://developer.android.com/guide/topics/data/data-storage.html找到对不同类型 Android 存储的参考

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

另一种方法是安装 userdebug 版本。

然而,最简单的方法是通过adbrun-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
于 2012-10-31T04:47:38.893 回答