Android SD卡 Txt 文件读写教程

4星 · 超过85%的资源 需积分: 50 169 下载量 76 浏览量 更新于2024-09-16 1 收藏 1002B TXT 举报
"在Android平台上,对SD卡进行读写操作是常见的需求,特别是涉及到存储用户数据或者应用程序需要持久化信息时。以下代码示例展示了如何读取和写入TXT文件到SD卡上。首先,为了能够访问SD卡,需要在AndroidManifest.xml文件中声明相应的权限。" 在Android系统中,如果应用程序需要对SD卡(外部存储)进行读写操作,必须首先获取相应的权限。这两个重要的权限是: 1. `WRITE_EXTERNAL_STORAGE`:允许应用写入外部存储(如SD卡),用于保存或修改文件。 2. `MOUNT_UNMOUNT_FILESYSTEMS`:这个权限较为特殊,主要用于挂载和卸载文件系统,一般情况下,只有系统应用才会使用此权限。对于普通的文件读写操作,通常不需要这个权限。 在AndroidManifest.xml文件中,添加如下代码来声明这两个权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> ``` 接下来,我们来看如何实现具体的读写操作: 1. 写入TXT文件: 这段代码创建了一个名为`writeFileSdcard`的方法,接收两个参数,一个是文件名(fileName),另一个是要写入的内容(message)。首先,它尝试创建一个`FileOutputStream`对象,将路径指向SD卡根目录下的指定文件。然后,将字符串转换为字节数组,并写入到输出流中。最后关闭输出流。如果在操作过程中出现异常,会打印堆栈跟踪。 ```java public void writeFileSdcard(String fileName, String message) { try { FileOutputStream fout = new FileOutputStream( android.os.Environment.getExternalStorageDirectory() + fileName); byte[] bytes = message.getBytes(); fout.write(bytes); fout.close(); } catch (Exception e) { e.printStackTrace(); } } ``` 2. 读取TXT文件: `readFileSdcard`方法用于读取SD卡上的TXT文件。同样,它接收一个文件名作为参数。首先,创建一个`FileInputStream`对象,打开指定文件。然后,通过`available()`方法获取文件的长度,创建相应大小的字节数组。接着,读取文件内容到字节数组,并使用`EncodingUtils.getString()`方法将字节转换回字符串,这里假设文件内容是UTF-8编码。最后关闭输入流并返回读取到的字符串。 ```java public String readFileSdcard(String fileName) { String res = ""; try { FileInputStream fin = new FileInputStream( Environment.getExternalStorageDirectory() + fileName); int length = fin.available(); byte[] buffer = new byte[length]; fin.read(buffer); res = EncodingUtils.getString(buffer, "UTF-8"); fin.close(); } catch (Exception e) { e.printStackTrace(); } return res; } ``` 需要注意的是,从Android 6.0(API级别23)开始,运行时权限管理引入,即使在AndroidManifest.xml中声明了权限,仍然需要在运行时请求用户的许可。因此,在实际应用中,还需要检查并请求用户授权`WRITE_EXTERNAL_STORAGE`权限。 此外,由于Android 10(API级别29)引入了分区存储,对非媒体文件的直接访问可能受到限制。对于新版本的Android,可能需要使用`getExternalFilesDir()`或`MediaStore` API来访问外部存储。在Android 11(API级别30)之后,直接写入公共目录可能会更受限,推荐使用`getExternalCacheDir()`或`getExternalFilesDir()`等方法来获取私有目录,这样无需用户权限即可进行读写操作。