android saf读写文件
时间: 2023-10-18 16:01:08 浏览: 280
android的读写文件
在 Android 中,可以使用 SAF(Storage Access Framework)读写文件。 SAF 可以让用户选择他们想要使用的文件浏览器应用来访问文件系统。以下是一个简单的示例代码:
1. 读取文件:
```
private static final int READ_REQUEST_CODE = 42;
public void performFileSearch() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, READ_REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = null;
if (resultData != null) {
uri = resultData.getData();
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
// 读取输入流中的数据
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
2. 写入文件:
```
private static final int WRITE_REQUEST_CODE = 43;
public void performFileSave() {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_TITLE, "my_file.txt");
startActivityForResult(intent, WRITE_REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = null;
if (resultData != null) {
uri = resultData.getData();
try {
OutputStream outputStream = getContentResolver().openOutputStream(uri);
// 写入数据到输出流中
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在这两个示例代码中,我们使用 Intent.ACTION_OPEN_DOCUMENT 和 Intent.ACTION_CREATE_DOCUMENT 来启动 SAF。在 onActivityResult 方法中,我们可以获取到用户选择的文件的 Uri,并且可以通过 getContentResolver().openInputStream 和 getContentResolver().openOutputStream 来读取和写入数据。
阅读全文