在我的应用程序中,我想用不同的名称保存某个文件的副本(这是我从用户那里得到的)
我真的需要打开文件的内容并将其写入另一个文件吗?
最好的方法是什么?
在我的应用程序中,我想用不同的名称保存某个文件的副本(这是我从用户那里得到的)
我真的需要打开文件的内容并将其写入另一个文件吗?
最好的方法是什么?
当前回答
现在回答可能太迟了,但最方便的方法是使用
FileUtils's
文件srcFile,文件destFile
这就是我所做的
`
private String copy(String original, int copyNumber){
String copy_path = path + "_copy" + copyNumber;
try {
FileUtils.copyFile(new File(path), new File(copy_path));
return copy_path;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
`
其他回答
在kotlin中,只需:
val fileSrc : File = File("srcPath")
val fileDest : File = File("destPath")
fileSrc.copyTo(fileDest)
下面是一个解决方案,如果在复制时发生错误,它实际上会关闭输入/输出流。这个解决方案利用apache Commons IO IOUtils方法来复制和处理流的关闭。
public void copyFile(File src, File dst) {
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(src);
out = new FileOutputStream(dst);
IOUtils.copy(in, out);
} catch (IOException ioe) {
Log.e(LOGTAG, "IOException occurred.", ioe);
} finally {
IOUtils.closeQuietly(out);
IOUtils.closeQuietly(in);
}
}
在Kotlin:很短的路
// fromPath : Path the file you want to copy
// toPath : The path where you want to save the file
// fileName : name of the file that you want to copy
// newFileName: New name for the copied file (you can put the fileName too instead of put a new name)
val toPathF = File(toPath)
if (!toPathF.exists()) {
path.mkdir()
}
File(fromPath, fileName).copyTo(File(toPath, fileName), replace)
这适用于任何文件,如图像和视频
简单易行的方法!
import android.os.FileUtils;
try (InputStream in = new FileInputStream(sourceFile);
OutputStream out = new FileOutputStream(destinationFile) ){
FileUtils.copy(in, out);
}catch(Exception e){
Log.d("ReactNative","Error copying file: "+e.getMessage());
}
这在Android O (API 26)上很简单,如你所见:
@RequiresApi(api = Build.VERSION_CODES.O)
public static void copy(File origin, File dest) throws IOException {
Files.copy(origin.toPath(), dest.toPath());
}