Android 使用与其他平台上基于磁盘的文件系统类似的文件系统。
本文讲述如何使用 Android 文件系统通过 File API 读取和写入文件。
File 对象适合按照从开始到结束的顺序不跳过地读取或写入大量数据。 例如,它适合于图片文件或通过网络交换的任何内容。
本文展示如何在您的应用中执行基本的文件相关任务。
假定您熟悉 Linux 文件系统的基础知识和 java.io 中的标准文件输入/输出 API。
选择内部或外部存储
所有 Android 设备都有两个文件存储区域:“内部”和“外部”存储。这些名称在 Android 早期产生,当时大多数设备都提供内置的非易失性内存(内部存储),以及移动存储介质,比如微型 SD 卡(外部存储)。一些设备将永久性存储空间划分为“内部”和“外部”分区,即便没有移动存储介质,也始终有两个存储空间,并且无论外部存储设备是否可移动,API 的行为均一致。以下列表汇总了关于各个存储空间的实际信息。
内部存储:
它始终可用。 只有您的应用可以访问此处保存的文件。 当用户卸载您的应用时,系统会从内部存储中移除您的应用的所有文件。 当您希望确保用户或其他应用均无法访问您的文件时,内部存储是最佳选择。
外部存储:
它并非始终可用,因为用户可采用 USB 存储设备的形式装载外部存储,并在某些情况下会从设备中将其移除。 它是全局可读的,因此此处保存的文件可能不受您控制地被读取。 当用户卸载您的应用时,只有在您通过 getExternalFilesDir() 将您的应用的文件保存在目录中时,系统才会从此处移除您的应用的文件。 对于无需访问限制以及您希望与其他应用共享或允许用户使用计算机访问的文件,外部存储是最佳位置。
注:
在 Android N 之前,内部文件可以通过放宽文件系统权限让其他应用访问。而如今不再是这种情况。如果您希望让其他应用访问私有文件的内容,则您的应用可使用 FileProvider。
提示:
尽管应用默认安装在内部存储中,但您可在您的清单文件中指定 android:installLocation 属性,这样您的应用便可安装在在外部存储中。当 APK 非常大且它们的外部存储空间大于内部存储时,用户更青睐这个选择。 如需了解详细信息,请参阅应用安装位置。
获取外部存储的权限
要向外部存储写入信息&#x