如何使用Java中的IO类来复制文件?
发布时间:2023-06-17 06:28:49
Java中的IO类提供了各种方法来读写文件和复制文件。要复制文件,可以使用Java IO类中提供的两种方法之一:使用文件流或使用Files类。
使用文件流
要使用文件流复制文件,需要创建一个FileInputStream对象来读取源文件,并创建一个FileOutputStream对象来写入目标文件。这两个对象都必须在try-catch语句块中创建,以便在出现异常时能够正确关闭它们。
以下是一个示例程序来复制源文件到目标文件:
import java.io.*;
public class FileCopyExample {
public static void main(String[] args) {
try {
File sourceFile = new File("input.txt");
File destFile = new File("output.txt");
FileInputStream inStream = new FileInputStream(sourceFile);
FileOutputStream outStream = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
int length;
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
System.out.println("File copied successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个示例程序中,我们首先创建了一个File对象来表示源文件和目标文件的路径。然后创建FileInputStream和FileOutputStream对象来分别读取源文件和写入目标文件。我们使用一个缓冲区来复制文件的数据。最后,关闭输入和输出流,并输出复制成功的消息。
使用Files类
另外,Java 7中引入了Files类,使复制文件变得更加简单。使用Files类,我们可以使用一行代码来复制文件。
以下示例程序展示了如何使用Files类来复制文件:
import java.io.*;
import java.nio.file.*;
public class FileCopyExample {
public static void main(String[] args) {
try {
Path sourcePath = Paths.get("input.txt");
Path destPath = Paths.get("output.txt");
Files.copy(sourcePath, destPath, StandardCopyOption.REPLACE_EXISTING);
System.out.println("File copied successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个示例程序中,我们首先创建了源文件和目标文件的Path对象。然后使用Files类的copy方法一行代码来复制文件。我们使用StandardCopyOption.REPLACE_EXISTING选项来指示如果目标文件已经存在,则应该替换它。最后,输出复制成功的消息。
总结
Java中的IO类提供了各种方法来读写文件和复制文件。使用文件流或使用Files类都可以实现文件复制操作。使用文件流可以控制复制的粒度,而使用Files类更加简单。无论使用哪种方法,需要注意正确关闭流并处理异常。
