要从现有的Uri复制文件,可以使用以下代码示例:
import android.content.Context;
import android.net.Uri;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileUtils {
public static void copyFileFromUri(Context context, Uri uri, String destinationPath) throws IOException {
InputStream inputStream = context.getContentResolver().openInputStream(uri);
OutputStream outputStream = new FileOutputStream(destinationPath);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}
public static void copyFileFromUriToExternalStorage(Context context, Uri uri, String destinationFileName) throws IOException {
File rootDir = Environment.getExternalStorageDirectory();
File destinationFile = new File(rootDir, destinationFileName);
copyFileFromUri(context, uri, destinationFile.getAbsolutePath());
}
}
使用上述代码,可以通过调用以下方法来复制文件:
复制文件到指定路径:
FileUtils.copyFileFromUri(context, uri, destinationPath);
复制文件到外部存储:
FileUtils.copyFileFromUriToExternalStorage(context, uri, destinationFileName);
请注意,需要在AndroidManifest.xml
文件中添加READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
权限,以及在运行时请求这些权限。