侧边栏壁纸
博主头像
小小酥心

旧书不厌百回读,熟读精思子自知💪

  • 累计撰写 22 篇文章
  • 累计创建 8 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Java复制文件方法

小小酥心
2022-01-12 / 0 评论 / 0 点赞 / 1,045 阅读 / 1,222 字
温馨提示:
本文最后更新于 2022-01-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、使用FileStreams复制

这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。

private static void copyFileUsingFileStreams(File source, File dest)
        throws IOException {
    try (
            InputStream input = new FileInputStream(source);
            OutputStream output = new FileOutputStream(dest)
    ) {
        byte[] buf = new byte[1024];
        int bytesRead;
        while ((bytesRead = input.read(buf)) != -1) {
            output.write(buf, 0, bytesRead);
        }
    }
}

二、使用FileChannel复制

Java NIO包括transferFrom方法。

private static void copyFileUsingFileChannels(File source, File dest) throws IOException {
    try (
            FileChannel inputChannel = new FileInputStream(source).getChannel();
            FileChannel outputChannel = new FileOutputStream(dest).getChannel()
    ) {
        outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
    }
}

三、使用Java7的Files类复制

如果你有一些经验在Java 7中你可能会知道,可以使用复制方法的Files类文件,从一个文件复制到另一个文件。

private static void copyFileUsingJava7Files(File source, File dest)
      throws IOException {    
      Files.copy(source.toPath(), dest.toPath());
}

四、使用其他工具类复制

Apache Commons IO提供拷贝文件方法在其FileUtils类。

private static void copyFileUsingApacheCommonsIO(File source, File dest)
        throws IOException {
    org.apache.commons.io.FileUtils.copyFile(source, dest);
}

国产的hutool.io中有文件工具类FileUtil。

private static void copyFileUsingApacheCommonsIO(File source, File dest)
        throws IOException {
    FileUtil.copy(source, dest, true);
}
0

评论区