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
获取存储路径,利用writeToFile
和readFromFile
分别进行文件的写入与读取操作。
五、处理常见问题
在实际开发中,处理外置 U 盘的读写时可能会遇到一些问题:
-
存储权限问题:如未获取到所需的权限,读写操作会失败。请确保在应用启动时申请权限。
-
U 盘未挂载:在进行任何文件操作前,需要确定 U 盘已被系统成功挂载。可以通过诸如
ACTION_MEDIA_MOUNTED
和ACTION_MEDIA_UNMOUNTED
等广播来监听挂载状态。 -
异常处理:任何文件操作都应该包含适当的异常处理代码,以确保程序的健壮性。
六、总结
在 Android 10 中,通过简单的代码即可实现外置 U 盘的读写操作,掌握外置存储的管理对于提高应用的性能和用户体验意义非凡。希望今天分享的内容能够帮助大家更好地了解 Android 外置 U 盘的读写操作。如果你有更多问题或者需求,欢迎随时交流!