当前位置:首页 > 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的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

java如何调试

java如何调试

调试Java程序的基本方法 使用IDE内置的调试工具(如IntelliJ IDEA或Eclipse)是最常见的方式。在代码行号旁点击设置断点,启动调试模式后,程序会在断点处暂停,允许查看变量值、调用栈…

java中如何获取当前时间

java中如何获取当前时间

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

java如何入门

java如何入门

学习基础语法 从Java的基础语法开始,包括变量、数据类型、运算符、控制结构(if-else、for循环、while循环)等。可以通过官方文档或入门教程学习。 安装开发环境 下载并安装JDK(J…

vue实现文件功能

vue实现文件功能

Vue 实现文件上传功能 使用 Vue 实现文件上传功能可以通过原生 HTML 的 <input type="file"> 结合 Vue 的事件处理和 HTTP 请求库(如 Axios)来…