📜  Java 如何复制文件 - Java (1)

📅  最后修改于: 2023-12-03 15:15:59.924000             🧑  作者: Mango

Java 如何复制文件

复制文件是Java编程中一项基本操作。Java提供了多种复制文件的方式,本文将逐一介绍。

使用文件输入输出流

要创建文件输入输出流,需要使用Java.io包中的FileInputStream和FileOutputStream类。这种方式需要显式地创建一个缓冲区,然后将输入流中的数据复制到缓冲区中,再将缓冲区中的数据输出到输出流中。以下是该方法的实现方式:

import java.io.*;

public class CopyFileUsingStream {
    public static void copy(File source, File dest) throws IOException {
        try (InputStream is = new FileInputStream(source);
             OutputStream os = new FileOutputStream(dest)) {
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        }
    }

    public static void main(String[] args) {
        File source = new File("sourcefile.txt");
        File dest = new File("destfile.txt");
        try {
            copy(source, dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
使用Java 7中的NIO.2

Java 7中引入的NIO.2提供了一组可用于文件操作的API。在NIO.2中,文件操作使用java.nio.file包中的Path和Files类。以下是使用NIO.2复制文件的实现方式:

import java.io.*;
import java.nio.file.*;

public class CopyFileUsingNIO2 {
    public static void copy(Path source, Path dest) throws IOException {
        Files.copy(source, dest, StandardCopyOption.REPLACE_EXISTING);
    }

    public static void main(String[] args) {
        Path source = Paths.get("sourcefile.txt");
        Path dest = Paths.get("destfile.txt");
        try {
            copy(source, dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
使用Apache Commons IO库

Apache Commons IO库提供了方便的文件操作API。使用该库中的FileUtils类的copyFile()方法来复制文件。以下是该方法的实现方式:

import org.apache.commons.io.*;

public class CopyFileUsingCommonsIO {
    public static void copy(File source, File dest) throws IOException {
        FileUtils.copyFile(source, dest);
    }

    public static void main(String[] args) {
        File source = new File("sourcefile.txt");
        File dest = new File("destfile.txt");
        try {
            copy(source, dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用上述的复制文件方法,可以轻松地解决Java编程中的各种文件操作问题。