当前位置:首页 > Java

java如何复制文件

2026-03-03 06:59:26Java

使用 Files.copy() 方法(NIO)

Java NIO 提供了 Files.copy() 方法,适用于 Java 7 及以上版本。该方法支持更高效的复制操作,尤其适合大文件。

java如何复制文件

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;

public class FileCopyNIO {
    public static void main(String[] args) {
        Path source = Paths.get("source.txt");
        Path target = Paths.get("target.txt");

        try {
            Files.copy(source, target);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 FileInputStream 和 FileOutputStream(传统 IO)

传统 IO 方式通过字节流逐字节或按缓冲区复制文件,适用于所有 Java 版本。

java如何复制文件

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopyIO {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("source.txt");
             FileOutputStream fos = new FileOutputStream("target.txt")) {

            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 Files.copy() 覆盖目标文件

若目标文件已存在,需通过 StandardCopyOption.REPLACE_EXISTING 强制覆盖。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.io.IOException;

public class FileCopyOverride {
    public static void main(String[] args) {
        Path source = Paths.get("source.txt");
        Path target = Paths.get("target.txt");

        try {
            Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 Apache Commons IO 库

第三方库 commons-io 提供 FileUtils.copyFile() 方法,简化代码。

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;

public class FileCopyCommons {
    public static void main(String[] args) {
        File source = new File("source.txt");
        File target = new File("target.txt");

        try {
            FileUtils.copyFile(source, target);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

选择方法的依据

  • 性能要求高或大文件:优先使用 NIO 的 Files.copy()
  • 兼容旧版本 Java:选择传统 IO 方式。
  • 需要简洁代码:考虑 Apache Commons IO 库。
  • 覆盖目标文件:添加 StandardCopyOption.REPLACE_EXISTING 参数。

标签: 文件java
分享给朋友:

相关文章

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

如何学好java编程

如何学好java编程

理解基础概念 掌握Java的基础语法是学习的起点。变量、数据类型、运算符、控制结构(如循环和条件语句)是核心内容。面向对象编程(OOP)的概念(类、对象、继承、多态、封装)是Java的核心,需深入理解…

vue前端实现文件下载

vue前端实现文件下载

使用 window.open 直接下载 通过 window.open 直接打开文件链接触发下载,适用于简单的文件下载场景。 将文件 URL 作为参数传入,浏览器会自动处理下载行为: window.o…

vue实现各类文件预览

vue实现各类文件预览

文件预览实现方案 在Vue中实现文件预览功能需要根据文件类型选择不同的技术方案。以下是常见文件类型的预览方法: 图片文件预览 使用HTML5的FileReader API读取图片文件并显示: &l…

如何启动react文件

如何启动react文件

启动 React 项目的步骤 确保已安装 Node.js 和 npm 在启动 React 项目之前,需确保系统已安装 Node.js(包含 npm)。可以通过以下命令检查是否安装成功: node -…

react如何调用打开文件

react如何调用打开文件

使用 input 元素触发文件选择 在 React 中可以通过创建一个隐藏的 input 元素并设置其 type 为 file。当用户点击自定义按钮时,通过 ref 触发该 input 的点击事件。…