在我的应用程序中,我想用不同的名称保存某个文件的副本(这是我从用户那里得到的)
我真的需要打开文件的内容并将其写入另一个文件吗?
最好的方法是什么?
在我的应用程序中,我想用不同的名称保存某个文件的副本(这是我从用户那里得到的)
我真的需要打开文件的内容并将其写入另一个文件吗?
最好的方法是什么?
当前回答
或者,您也可以使用FileChannel来复制文件。在复制大文件时,它可能比字节复制方法更快。如果你的文件大于2GB,你就不能使用它。
public void copy(File src, File dst) throws IOException {
FileInputStream inStream = new FileInputStream(src);
FileOutputStream outStream = new FileOutputStream(dst);
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
inStream.close();
outStream.close();
}
其他回答
现在回答可能太迟了,但最方便的方法是使用
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中你可以用
file1.copyTo(file2)
file1是原始文件的对象,而file2是要复制到的新文件的对象
简单易行的方法!
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());
}
要复制文件并将其保存到目标路径,您可以使用下面的方法。
public static void copy(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src);
try {
OutputStream out = new FileOutputStream(dst);
try {
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
} finally {
out.close();
}
} finally {
in.close();
}
}
在API 19+上,您可以使用Java自动资源管理:
public static void copy(File src, File dst) throws IOException {
try (InputStream in = new FileInputStream(src)) {
try (OutputStream out = new FileOutputStream(dst)) {
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
}
}
}
现在使用Kotlin要简单得多:
File("originalFileDir", "originalFile.name")
.copyTo(File("newFileDir", "newFile.name"), true)
Trueorfalse用于覆盖目标文件
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/java.io.-file/copy-to.html