Android app 实现修改/mnt/sdcard/data.txt文件内容,把里面的hello world替换成world hello
时间: 2024-10-10 18:15:40 浏览: 49
在Android应用程序中,由于安全限制,直接对`/mnt/sdcard`目录下的文件进行读写操作通常是不允许的,因为这涉及到外部存储权限和应用的运行环境。为了在Android上实现这种修改文件内容的功能,你需要:
1. **获取外部存储权限**:在AndroidManifest.xml中添加`<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />`,并在运行时请求权限。
2. **使用ContentResolver API**:通过`FileProvider`和`ContentResolver`间接访问外部存储,这样可以绕过直接路径的限制。
3. **创建文件操作**:使用`java.io.File`、`FileOutputStream`或`BufferedWriter`等类,创建一个`File`对象并指向`data.txt`,然后打开文件,读取原始内容,替换字符串,再写回文件。
```java
File file = new File(getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), "data.txt");
if (file.exists()) {
try (FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(file);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos))) {
String content;
// 读取原内容
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
if (line.contains("hello")) { // 如果找到"hello"
sb.append(line.replaceFirst("hello", "world")); // 替换后追加到StringBuilder
} else {
sb.append(line); // 不需要替换的部分直接追加
}
}
// 写回文件
writer.write(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 文件不存在,处理新建或异常情况
}
```
阅读全文