[我正在尝试找到一种方法,该方法可以处理除媒体文件(图片/视频/音频)以外的任何文件的创建和复制,以将其从Android Q的内部存储中的一个位置复制到另一个位置。在此方法中,我已创建了文件应用程序文件夹,我希望这些文件夹移至“下载文件夹”或我可以在内部存储中创建的某个目录,然后再将其移动。
我搜索并发现下面的代码经过修改,但是缺少一些使之可行的东西。可以帮个忙。
ContentResolver contentResolver = getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "sam.txt");
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "text/plain");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS);
Uri uri = contentResolver.insert(MediaStore.Files.getContentUri("external"), contentValues);
try {
InputStream inputStream = contentResolver.openInputStream(uri);
OutputStream outputStream = new FileOutputStream(Environment.DIRECTORY_DOWNLOADS+"/");
byte[] buffer = new byte[1024];
int length;
//copy the file content in bytes
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
以上是完整代码,因为我收到错误消息“未知URL”。缺什么?请帮助。
正如您提到的Environment.getExternalStoragePublicDirectory
标记为已弃用。因此,没有常规方法可以获取“下载”目录的路径来将文件保存在那里。或者,您可以使用ACTION_CREATE_DOCUMENT
显示路径选择器,然后使用返回的uri将文件写入所选位置。