FileOutputStream在Mac OS中创建的文件的确切路径在哪里?

时间:2016-03-01 16:00:51

标签: android macos android-studio-2.0-beta5

我正在尝试使用以下代码在我的Android应用中创建一个简单的文本文件:

            FileOutputStream fileout=mContext.openFileOutput("mytextfile.txt", mContext.MODE_PRIVATE);
            OutputStreamWriter outputWriter=new OutputStreamWriter(fileout);
            outputWriter.write(String.valueOf(executionTime));
            outputWriter.close();
            Log.d("write","Done writing to 'mysdfile.txt'");

我将不同的文件路径记录为:

            String absoluteFilePath=new File(".").getAbsolutePath();
            String canonicalFilePath=new File(".").getCanonicalPath();
            String filePath=new File(".").getPath();
            Log.d("absolutepath",absoluteFilePath);
            Log.d("canonicalpath",canonicalFilePath);
            Log.d("path",filePath);

在调试器中我看到文件路径为:

enter image description here

当我点击绝对路径蓝色标记时,它将我带到Macintosh HDD文件夹。其余两条路径对我没有任何意义。

我还检查了当前目录,文件不在那里。我正在尝试将文件存储在内部存储中。

我正在棒棒糖设备上测试它。

注意:我在应用程序在模拟器上运行时看到在DDMS中创建的文件,但在设备上没有。

我在哪里可以找到FileOutputStream创建的文件?

1 个答案:

答案 0 :(得分:1)

  

我在哪里可以找到FileOutputStream创建的文件?

它将在Android设备或模拟器上。

  

我将不同的文件路径记录为

这些都不是Android上的有效路径。

  

我的Android设备没有SD卡

没关系,因为openFileOutput()与任何Android设备上的SD卡无关。 openFileOutput()路由到internal storage

  

我可以在哪里查看设备?

引用myself

  

在模拟器上,DDMS可以浏览所有内部存储,因此您可以从应用程序或任何其他应用程序访问文件。

     

在有根设备上,有一些方法可以让DDMS获得相同的自由度。

     

在普通(非root)设备上,DDMS无法访问内部存储。 DDMS会话的设备上的软件作为硬件上的普通用户帐户运行,而它在模拟器上以超级用户权限运行。硬件上的普通用户无法访问您应用的文件,只不过与任何其他应用相关联的任何用户帐户。

     

在硬件上获取内部存储的方法是在命令行中使用adb的run-as选项。例如,要将数据库从主用户的内部存储器下载到开发计算机,您可以使用:

adb shell 'run-as your.application.package.name cp /data/data/your.application.package.name/databases/dbname.db /sdcard
  

请注意:

     
      
  • 您需要将目标更改为设备外部存储器映射到的位置(此处显示为/sdcard/,这不适用于所有设备)

  •   
  • 您可能需要在旧设备上使用cat代替cp

  •   
     

但是,一旦运行该命令,数据库将被复制到外部存储器,您可以通过DDMS或通过任何传统方式访问该外部存储器以通过USB电缆在设备上打开和关闭文件(例如,Windows中的驱动器号) )。