2016-03-01 220 views
0

我想使用的代码在我的Android应用程序创建一个简单的文本文件:Mac OS中由FileOutputStream创建的文件的确切路径在哪里?

  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创建的文件?

+0

“我在哪里可以找到由FileOutputStream创建的文件?” - 它将在Android设备或模拟器上。 “并且我将不同的文件路径记录为” - 这些都不是Android上的有效路径。 – CommonsWare

+0

我的android设备没有SD卡。我在哪里可以在设备上检查他们? –

回答

1

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

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

和我登录不同的文件路径,

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

我的Android设备可是没有一个SD卡

这很好,因为openFileOutput()无关的任何Android设备上的SD卡。 openFileOutput()路线到internal storage

我在哪里可以在设备上检查它们?

报价myself

在一个模拟器,DDMS必须浏览所有内部存储的,所以你可以从你的应用程序或任何其他应用程序访问文件的能力。

在根源设备上,有允许DDMS具有相同自由度的配方。

在普通(未根)设备上,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/,这将不适用于所有设备)

  • 您可能需要对旧设备

但是,一旦运行该命令,将数据库拷贝到外部存储,您可以通过DDMS访问,或通过任何常规的方式来获得使用cat代替cp文件通过USB电缆打开和关闭设备(例如Windows中的驱动器盘符)。