【问题标题】:What file system path is used by Android's Context.openFileOutput()?Android 的 Context.openFileOutput() 使用什么文件系统路径?
【发布时间】:2011-06-22 23:59:06
【问题描述】:

我不明白为什么这个问题的答案不在 Android 开发者文档中;我发现他们总是令人沮丧。

关于Context类的openFileOutput()方法打开一个文件进行写入,它写入的内部存储文件路径是什么?

http://developer.android.com/reference/android/content/Context.html

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

【问题讨论】:

  • data > data > your app id > files
  • 手机需要root才能查看/data/data

标签: android


【解决方案1】:

您可以通过调用Context#getFileStreamPath(String) 来检索该文件路径:

返回文件系统上存储使用openFileOutput(String, int) 创建的文件的绝对路径。

它返回一个File,然后调用File#getAbsolutePath()

总结一下:

context.getFileStreamPath(name).getAbsolutePath()

【讨论】:

    【解决方案2】:

    在 DDMS 中,我在以下位置找到了我的文件:

    data > data > your app id > files
    

    【讨论】:

    • 我的数据文件夹看起来总是空的,知道我可能缺少什么吗?
    • 可能是您的手机有多个存储,现在很多手机都有几 GB 的内部存储,称为“sd0”(取决于您的制造商,有些可能会选择其他名称),同时还允许您要插入名为“sd1”的 SD 卡等外部存储设备,您必须先选择正确的存储设备,然后再查找您的应用数据。
    • 您的手机需要root。否则数据文件夹将显示为空。
    【解决方案3】:

    关于Context类的openFileOutput()方法打开一个文件进行写入,它写入的内部存储文件路径是什么?

    它指向getFilesDir() on Context 返回的位置。你可以这么说,因为文档说:

    返回文件系统上存储使用 openFileOutput(String, int) 创建的文件的目录的绝对路径。

    【讨论】:

    • 我希望文档清楚地表明该位置可以移动以及使用什么方法来查找该位置(例如,将 getFilesDir() 添加到“另请参阅”部分)。非常感谢马克,感谢您的帮助。
    • @Ollie C:是的,没有交叉引用很奇怪。在每个页面上都有继承的内容(例如,每个 Context 子类 Javadoc 中的 openFileOutput())的缺点之一是搜索变得更加痛苦。
    • @CommonsWare,我是一个新手,这似乎是一个幼稚的问题,但它与这个主题有关:当我尝试使用 context.openFileOutput(this.fileName) 将文件保存到我的外部存储时, Context.MODE_APPEND) 该方法不会抛出任何异常并正常执行并且 Context.getFilesDir() 返回:/data/data/com.proj.myproject/files。但是当我检查手机的外部存储器并转到 /Data 时,它是空的。我也在清单中添加了 WRITE_EXTERNAL_STORAGE 权限。那它可以在哪里保存文件呢?感谢您的帮助!
    • @powernit:openFileOutput()internal storage。你手机的“外部存储器”要么是external storage,要么是removable storage。这些都不是一回事。
    • @CommonsWare:谢谢,所以如果我使用 openFileOutput() 存储任何内容,那么只有应用程序可以读取和写入它,并且它是该应用程序私有的。所以只有上下文中的应用程序才能看到它。这种洞察力真的帮助了我。
    【解决方案4】:

    此文件被写入设备内存中与您的应用相关的路径。 你可能会用ddms 偷看位置,但是当你使用这个 Context.openFileOutput() 时,你不应该关心任何绝对路径。

    如果你想传递文件名,你应该考虑使用external storage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多