在Android系统中,外部存储设备通常被称为SD卡(尽管它可能并不一定是物理的SD卡),是应用程序用来存储大量数据的理想场所。本示例教程将详细解释如何在Android应用中实现SD卡的读写操作,特别是在用户界面(UI)中通过EditText组件进行数据交互。 确保你的AndroidManifest.xml文件中包含了以下权限,这是读写SD卡所必需的: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 由于Android 6.0(API级别23)引入了运行时权限管理,你需要在应用运行时动态请求这些权限。可以使用`ActivityCompat.checkSelfPermission()`检查权限,并使用` ActivityCompat.requestPermissions()`请求权限。 接下来,创建一个用于写入SD卡的函数。这里假设你有一个EditText组件,用户可以在其中输入要保存的内容: ```java public void writeFileToSDCard(String content) { File sdCard = Environment.getExternalStorageDirectory(); File dir = new File(sdCard.getAbsolutePath() + "/MyFolder"); // 创建一个名为"MyFolder"的目录 dir.mkdirs(); // 创建目录 File file = new File(dir, "myFile.txt"); // 创建一个名为"myFile.txt"的文件 try { FileOutputStream fos = new FileOutputStream(file); fos.write(content.getBytes()); fos.close(); Toast.makeText(this, "文件写入成功", Toast.LENGTH_SHORT).show(); } catch (IOException e) { Toast.makeText(this, "文件写入失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } ``` 在用户点击保存按钮时调用这个函数,获取EditText中的文本内容作为参数。 读取SD卡上的文件与之类似,创建一个函数来读取内容并显示在另一个EditText中: ```java public void readFileFromSDCard() { File sdCard = Environment.getExternalStorageDirectory(); File file = new File(sdCard.getAbsolutePath() + "/MyFolder/myFile.txt"); try { FileInputStream fis = new FileInputStream(file); BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); StringBuilder contentBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { contentBuilder.append(line); } reader.close(); EditText editText = findViewById(R.id.editTextRead); editText.setText(contentBuilder.toString()); // 将读取的内容设置到EditText中 } catch (IOException e) { Toast.makeText(this, "文件读取失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } ``` 在读取文件后,你可以选择更新UI,例如在一个按钮的点击事件中调用`readFileFromSDCard()`。 需要注意的是,从Android 10(API级别29)开始,Android引入了 scoped storage,限制了应用程序对外部存储的直接访问。如果你的应用需要在Android 10及更高版本上运行,可能需要使用`getExternalFilesDir()`或`getExternalCacheDir()`等方法来获取特定于应用的存储空间,或者使用`MediaStore` API来访问公共媒体文件。 在SD卡读写过程中,一定要处理可能出现的异常,如文件不存在、权限不足等,以确保应用的健壮性。此外,为了提供良好的用户体验,记得在操作完成后通知用户结果,例如使用Toast消息。 这就是如何在Android应用中实现SD卡读写的详细过程。通过这个SDcardDemo项目,你可以学习到如何将用户输入的数据持久化到外部存储,并能读回显示,这对于许多需要存储用户数据的应用场景是非常有用的。
- 1
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助