Android 10 外置 U 盘读写

随着移动存储的广泛使用,外置 U 盘成为了我们日常生活和工作中常用的工具。在 Android 10 中,对外置 U 盘的支持进一步增强,我们可以通过编程的方式进行读写操作。本文将详细介绍如何在 Android 10 中实现外置 U 盘的读写,并提供相应的代码示例。

一、外置存储权限

在 Android 10 中,对存储权限进行了更严格的管理。首先,需要在 AndroidManifest.xml 中声明以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

此外,从 Android 10 开始,使用 requestLegacyExternalStorage 属性可以让你的应用在访问外部存储时保持传统方式。你需要在 AndroidManifest.xml 中添加:

<application
    android:requestLegacyExternalStorage="true"
    ... >

二、获取外置 U 盘的路径

当你插入外置 U 盘后,可以通过以下代码获取路径:

private String getExternalStoragePath(Context context) {
    File[] externalFiles = context.getExternalFilesDirs(Environment.DIRECTORY_DOCUMENTS);
    for (File file : externalFiles) {
        if (file != null && Environment.isExternalStorageRemovable(file)) {
            return file.getAbsolutePath();
        }
    }
    return null;
}

代码说明:

  • getExternalFilesDirs 方法会返回所有的外部存储路径。
  • 使用 Environment.isExternalStorageRemovable 判断是否为可移动存储器。

三、读写外置 U 盘

当获取到外置 U 盘的路径后,便可以进行文件的读写操作。

3.1 写入文件

以下是一个将字符串数据写入 U 盘的示例:

public void writeToFile(String fileName, String content) {
    String path = getExternalStoragePath(context) + "/" + fileName;
    File file = new File(path);
    try (FileOutputStream fos = new FileOutputStream(file)) {
        fos.write(content.getBytes());
        fos.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

3.2 读取文件

读取文件的实现可以如下:

public String readFromFile(String fileName) {
    StringBuilder stringBuilder = new StringBuilder();
    String path = getExternalStoragePath(context) + "/" + fileName;
    File file = new File(path);
    
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line;
        while ((line = br.readLine()) != null) {
            stringBuilder.append(line).append("\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    return stringBuilder.toString();
}

代码说明:

  • 在写入文件时,使用 FileOutputStream 进行文件写入,确保使用 flush 方法将缓存数据写入文件。
  • 在读取文件时,使用 BufferedReader 按行读取内容。

四、类图

以下是对应的类图,描述了主要方法与类之间的关系:

classDiagram
    class ExternalStorageManager {
        +String getExternalStoragePath(Context context)
        +void writeToFile(String fileName, String content)
        +String readFromFile(String fileName)
    }

类图说明:

  • ExternalStorageManager 类负责外置 U 盘的读写操作。
  • 通过 getExternalStoragePath 获取存储路径,利用 writeToFilereadFromFile 分别进行文件的写入与读取操作。

五、处理常见问题

在实际开发中,处理外置 U 盘的读写时可能会遇到一些问题:

  1. 存储权限问题:如未获取到所需的权限,读写操作会失败。请确保在应用启动时申请权限。

  2. U 盘未挂载:在进行任何文件操作前,需要确定 U 盘已被系统成功挂载。可以通过诸如 ACTION_MEDIA_MOUNTEDACTION_MEDIA_UNMOUNTED 等广播来监听挂载状态。

  3. 异常处理:任何文件操作都应该包含适当的异常处理代码,以确保程序的健壮性。

六、总结

在 Android 10 中,通过简单的代码即可实现外置 U 盘的读写操作,掌握外置存储的管理对于提高应用的性能和用户体验意义非凡。希望今天分享的内容能够帮助大家更好地了解 Android 外置 U 盘的读写操作。如果你有更多问题或者需求,欢迎随时交流!