Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android程序写入模拟器但不写入手机_Java_Android - Fatal编程技术网

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

Java Android程序写入模拟器但不写入手机,java,android,Java,Android,我正在尝试编写一个Android程序来接受输入,然后将数据写入手机内部存储器中的文件。当我在模拟器上执行我的程序时,它会生成一个我期望的文件,但当我尝试在手机上执行时,文件似乎没有被创建。我在这个网站上到处看看,似乎找不到解决我问题的方法(一些类似的方法,但对我来说没有任何效果),我希望你们能给我一些建议,说明我做错了什么 FileOutputStream fos = null; String x = "Sample String"; try{ fos = ope

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

你不能访问你手机的内部目录,除非你是根目录。