我正在开发一个应用程序,允许用户创建备份文件,然后使用文件选择器重新导入它们。我使用以下代码导出文件:
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.setType("application/*");
startActivityForResult(intent, Constants.FILE_CHOOSER);
代码在onActivityResult()中返回一个URI:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == Constants.FILE_CHOOSER) {
Uri uri = data.getData();
}
我有File
引用我应用的本地存储中包含数据的文件。我只想从应用程序的内部存储中取出文件并将其保存到用户选择的任何目录中。我无法让它发挥作用。如何将返回的Uri
转换为File
,以便我可以更轻松地编写数据?
答案 0 :(得分:1)
我只想从应用程序的内部存储中取出文件并将其保存到用户选择的任何目录中
用户未选择目录。用户正在创建一个文档,Uri
指向该文档。
如何将返回的Uri转换为文件,以便更轻松地编写数据?
您不会将HTTPS URL转换为File
,因此您可以更轻松地写入数据。
使用ContentResolver
和openOutputStream()
在OutputStream
创建的(空)文档上打开ACTION_CREATE_DOCUMENT
,并由返回的Uri
标识。然后,使用标准Java I / O将文件中的字节(例如,通过FileInputStream
)复制到OutputStream
。