2012-10-31 38 views
2

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

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

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

我似乎无法想别的,我可能做错了。感谢您的帮助,非常感谢。

+1

除非你铲除它,你不能访问你的手机的内部目录。 – Wenhui

回答

0

你的代码是好的,但像其他人所说DDMS在Eclipse中不具有内部存储,这是在/数据/数据生命适当的访问。您可以在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 
+0

感谢您的明确答案和例子! –

0

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

相关问题