将文件保存到设备存储空间中

Android 使用的文件系统类似于其他平台上基于磁盘的文件系统。本页介绍了如何借助 Android 文件系统使用 File API 读取和写入文件。

File 对象适用于按从头至尾的顺序(不会跳过)读取或写入大量数据。例如,它适用于图片文件或通过网络交换的任何内容。

可保存文件的确切位置可能因设备而异,因此您应使用本页中介绍的方法访问内部和外部存储空间路径(而不是使用绝对文件路径)。

要查看设备上的文件,您可以记录 File.getAbsolutePath() 之类的方法提供的文件位置,然后使用 Android Studio 的 Device File Explorer 浏览设备文件。

选择内部或外部存储空间

所有 Android 设备都有两个文件存储区域:内部存储空间外部存储空间。这些名称是在 Android 早期确定的,那时候大部分设备都提供内置的非易失性内存(内部存储空间)以及可移动存储媒介(如 Micro SD 卡,提供外部存储空间)。现在,很多设备将永久性存储空间划分为单独的“内部”和“外部”分区。因此,即使没有可移动存储媒介,这两种存储空间也始终存在,并且无论外部存储空间是否可移动,这两种存储空间的 API 行为都是相同的。

由于外部存储空间可能是可移动的,因此这两种选项之间存在一些差异,如下所示。

内部存储空间:

  • 始终提供。
  • 只有您的应用可以访问保存到此处的文件。
  • 如果用户卸载您的应用,系统会从内部存储空间中移除您应用的所有文件。

如果您希望确保用户和其他应用都无法访问您的文件,最好使用内部存储空间。

外部存储空间:

  • 并非始终提供,因为用户可以将外部存储空间装载为 USB 存储设备,也可以在某些情况下将其从设备中移除。
  • 全局可读,因此保存到此处的文件可能在您的控制范围之外被读取。
  • 如果用户卸载您的应用,系统会从此处移除您应用的文件(仅当您通过 getExternalFilesDir() 将这些文件保存到目录中)。

对于不需要访问限制的文件以及您希望与其他应用共享或允许用户通过计算机访问的文件,外部存储空间是最佳位置。

注意:尽管应用默认安装到内部存储空间中,但您可以通过在清单中指定 android:installLocation 属性将应用安装到外部存储空间中。如果要安装的 APK 非常大且外部存储空间比内部存储空间大得多,则用户会倾向于使用此选项。如需了解详情,请参阅应用安装位置

其他资源

如需详细了解如何将文件保存到设备存储空间中,请参阅以下资源。

Codelab