📜  Kotlin Android读写外部存储(1)

📅  最后修改于: 2023-12-03 15:02:31.968000             🧑  作者: Mango

Kotlin Android读写外部存储

在Android应用程序中,存储是一个重要的问题。应用程序通常需要将数据存储在设备的本地存储器上,以便在后续会话中使用。本文将介绍如何在Kotlin编写的Android应用程序中读写外部存储。

获取外部存储目录

在Android中,可以使用getExternalFilesDir()函数获取外部存储目录。该目录可以用于保存应用程序相关的文件。外部存储目录通常位于设备的SD卡或类似的可移动存储设备上。

val extStorageDir = context?.getExternalFilesDir(null)
写入文件到外部存储

要将文件写入外部存储,我们必须获得存储目录,然后创建一个文件并将数据写入该文件。以下代码片段演示如何将字符串写入文件。

val extStorageDir = context?.getExternalFilesDir(null)
val file = File(extStorageDir, "test.txt")
val fileOutputStream = FileOutputStream(file)
val dataOutputStream = DataOutputStream(fileOutputStream)
dataOutputStream.writeUTF("Hello World!")
dataOutputStream.close()
读取外部存储中的文件

要从外部存储读取文件,我们必须获得存储目录并打开文件。然后,我们可以读取文件中的数据。以下代码片段演示如何读取文件中的字符串。

val extStorageDir = context?.getExternalFilesDir(null)
val file = File(extStorageDir, "test.txt")
val fileInputStream = FileInputStream(file)
val dataInputStream = DataInputStream(fileInputStream)
val text = dataInputStream.readUTF()
dataInputStream.close()
检查外部存储是否可用

在读写外部存储之前,我们需要检查外部存储是否可用。无法读取或写入不存在的外部存储设备。以下代码片段演示如何检查外部存储是否可用。

val state = Environment.getExternalStorageState()
if (Environment.MEDIA_MOUNTED == state) {
    // External storage is available
} else if (Environment.MEDIA_MOUNTED_READ_ONLY == state) {
    // External storage is read-only
} else {
    // External storage is unavailable
}
请求外部存储权限

Android 6.0及更高版本需要应用程序请求权限才能访问外部存储。以下代码片段演示如何请求写入外部存储的权限。

if (ContextCompat.checkSelfPermission(context!!, Manifest.permission.WRITE_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
}
结论

本文介绍了如何在Kotlin编写的Android应用程序中读写外部存储。我们可以使用getExternalFilesDir()函数获取外部存储目录,并使用File类读取和写入文件。我们还介绍了如何检查外部存储是否可用,并在需要时请求外部存储权限。为了保障应用程序的功能,尤其是对文件读取或写入的操作,务必进行数据完整性、访问合法性与异常处理的一系列严密考虑。