使用 Java Files 类复制文件

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何在 Java 中将一个文件复制到另一个文件。复制文件有多种方法,例如使用 FileInputStreamFileOutputStreamFiles 类。在这里,我们将重点介绍 Files 类,因为它提供了一个 copy() 方法,可以轻松地将源文件复制到目标文件。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/create_write_files("Create/Write Files") java/FileandIOManagementGroup -.-> java/io("IO") java/FileandIOManagementGroup -.-> java/stream("Stream") java/FileandIOManagementGroup -.-> java/nio("NIO") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("Working") subgraph Lab Skills java/files -.-> lab-117430{{"使用 Java Files 类复制文件"}} java/create_write_files -.-> lab-117430{{"使用 Java Files 类复制文件"}} java/io -.-> lab-117430{{"使用 Java Files 类复制文件"}} java/stream -.-> lab-117430{{"使用 Java Files 类复制文件"}} java/nio -.-> lab-117430{{"使用 Java Files 类复制文件"}} java/working -.-> lab-117430{{"使用 Java Files 类复制文件"}} end

导入所需的库

在新的 Java 文件中,使用以下代码导入所需的库:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.File;
import java.io.FileInputStream;

创建文件对象

创建一个指向需要复制的源文件的文件对象。

File source = new File("sourceFile.txt");

创建目标文件对象

创建一个目标文件对象,指向你希望将源文件数据复制到的文件。

File destination = new File("destinationFile.txt");

使用 Files 类复制数据

使用 Files 类将数据从源文件复制到目标文件。你可以使用 Files 类的 copy() 方法来实现这一点。

Path sourcePath = Paths.get(source.getAbsolutePath());
OutputStream destinationStream = new FileOutputStream(destination);
Files.copy(sourcePath, destinationStream);

使用 FileInputStream 和 FileOutputStream 复制数据

在这种方法中,我们将使用 FileInputStream 和 FileOutputStream 来复制数据。使用以下代码从源文件中读取数据,并通过 FileOutputStream 的 write() 方法写入数据。

FileInputStream sourceStream = new FileInputStream(source);
FileOutputStream destinationStream = new FileOutputStream(destination);

byte[] buffer = new byte[1024];
int bytesRead;

while ((bytesRead = sourceStream.read(buffer)) > 0) {
    destinationStream.write(buffer, 0, bytesRead);
}

sourceStream.close();
destinationStream.close();

编译程序

打开终端并导航到 ~/project 目录。使用以下命令编译程序:

javac CopyFile.java

运行程序

使用以下命令运行程序:

java CopyFile

总结

在本实验中,你学习了如何使用 Files 类以及 FileInputStream 和 FileOutputStream 将数据从一个文件复制到另一个文件。Files 类更易于使用,因为它提供了一个 copy() 方法,可以立即复制数据。你也可以通过手动读写数据的方式,使用 FileInputStream 和 FileOutputStream 来复制数据。