Android SDCard 文件读写实战指南

7 下载量 131 浏览量 更新于2024-09-01 收藏 93KB PDF 举报
"Android将文件存储到SDCard的实现方式" 在Android系统中,当需要存储大文件如视频时,通常会将它们保存在外部存储设备,即SDCard上,因为手机内置存储空间可能有限。SDCard可以视为移动存储设备,提供额外的存储空间。在Android应用程序中操作SDCard进行读写文件,需要遵循特定的步骤和注意事项。 首先,要使用SDCard,需要在创建Android模拟器时或之后通过DOS命令行工具`mksdcard`来创建一个SDCard镜像文件。例如,创建一个2GB的SDCard镜像命令如下: ``` mksdcard 2048M D:\AndroidTool\sdcard.img ``` 在实际开发中,访问SDCard之前,必须在`AndroidManifest.xml`文件中声明相应的权限。两个关键权限是: ```xml <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 在代码中,需要检查SDCard的状态,确保它已挂载并且可读写: ```java if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // SDCard可用,进行读写操作 File sdCardDir = Environment.getExternalStorageDirectory(); // ... 创建、读取或写入文件的代码 } else { // SDCard不可用,处理错误情况 } ``` 接下来,你可以使用`File`类来创建、读取和写入SDCard上的文件。例如,创建一个新文件: ```java File sdCardFile = new File(sdCardDir, "myVideo.mp4"); if (!sdCardFile.exists()) { try { sdCardFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } ``` 写入文件,可以使用`FileOutputStream`: ```java try (FileOutputStream fos = new FileOutputStream(sdCardFile)) { byte[] data = ...; // 文件内容的字节数组 fos.write(data); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ``` 读取文件,可以使用`FileInputStream`: ```java try (FileInputStream fis = new FileInputStream(sdCardFile)) { byte[] buffer = new byte[1024]; int read; while ((read = fis.read(buffer)) != -1) { // 处理读取的数据 } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ``` 需要注意的是,从Android 6.0(API级别23)开始,运行时权限管理引入,即使在`AndroidManifest.xml`中声明了权限,仍需在运行时动态请求`WRITE_EXTERNAL_STORAGE`权限。如果目标SDK版本大于等于23,应在代码中添加相应逻辑来请求权限。 Android应用程序可以通过检查SDCard状态、声明权限以及使用`File`和流对象来实现对SDCard的读写操作。在处理大文件时,确保正确管理内存和流操作,避免可能导致性能问题或数据丢失的异常情况。