Java 复制文件的不同方法
Java提供了不同的方法来复制文件,包括’File’,’FileInputStream’和’FileOutputStream’类。有时我们需要备份文件、压缩文件或与他人分享文件。在这些情况下,复制文件变得必要。我们将探索能够通过Java程序将一个文件的内容复制到另一个文件的方法和类。
在直接跳转到示例程序之前,让我们讨论一些我们将使用的类和内置方法。这将为理解代码打下基础。请注意,这些类和方法也与一些异常关联,因此需要定义一个catch块来处理这些异常。
输入/输出流
流是在进行Java的输入和输出操作时使用的抽象。基本上,输入流用于从键盘、磁盘文件等来源获取输入。输出流指的是数据显示或写入的目标。
文件类
这个类表示文件和目录的路径,以字符串的形式传递路径作为参数给它的对应构造函数。
语法
File nameOfObject = new File("filePath");
FileInputStream类
它用于读取文件的内容。为了进行这个操作,我们需要创建一个File类的实例,并将它作为参数传递给FileInputStream的构造函数。它将保存源文件的路径。
语法
FileInputStream nameOfObject = new FileInputStream(objectOfsourceFile);
FileOutputStream类
它用于将文件的内容写入指定的文件中。为了进行此操作,我们需要创建一个‘File’类的实例,并将其作为参数传递给FileOutputStream的构造函数。它将存储目标文件的路径。
语法
FileOutputStream nameOfObject = new FileOutputStream(objectOfdestinationFile);
Files.copy()
它接受由逗号分隔的两个参数,第一个参数指定源文件,第二个参数指定目标文件。在复制操作之前,目标文件不能存在,它将根据目标“File”类的实例由编译器隐式创建。
语法
Files.copy(objectOfSourceFile.toPath(), objectOfDestinationFile.toPath());
使用Java复制文件的方法
有两种不同的方法可以执行复制操作。
使用FileInputStream和FileOutputStream复制文件
让我们快速浏览一下这种方法:
步骤
- 定义两个File类的实例,一个用于源文件路径,另一个用于目标文件路径。
-
现在,将这些路径传递给FileInputStream和FileOutputStream构造函数。
-
使用while循环读取和写入文件内容。
read()
方法将读取源文件中的内容,write()
方法将内容写入目标文件。
示例
import java.io.*;
import java.util.*;
public class CopyFile1 {
public static void main(String[] args) {
try {
// to read the path of files
File flpath1 = new File("D:/Java Programs/file1.txt");
File flpath2 = new File("D:/Java Programs/file2.txt");
// passing file path to streams
FileInputStream inptStrm = new FileInputStream(flpath1);
FileOutputStream outStrm = new FileOutputStream(flpath2);
int info = 0;
// reading the given file1
while( (info = inptStrm.read()) != -1) {
outStrm.write(info); // writing to file2
}
System.out.print("File1 copied to the given file!!");
}
catch(Exception exp) { // for handling exception
System.out.println("There is an error finding file");
}
}
}
输出
File copied to the given file!!
使用Files.copy()方法复制文件
让我们快速浏览一下方法:
方法
- 定义两个文件类实例。一个用于源文件路径,另一个用于目标文件路径
-
使用内置方法Files.copy()执行复制操作
示例
import java.io.*;
import java.nio.file.*;
public class CopyFile2 {
public static void main(String[] args) {
try {
// to read the path of files
File flpath1 = new File("D:/Java Programs/File1.txt");
File flpath2 = new File("D:/Java Programs/File2.txt");
// copying the file1 to file2
Files.copy(flpath1.toPath(), flpath2.toPath());
System.out.print("File1 copied to the given file!!");
}
catch(Exception exp) { // for handling exception
System.out.println("There is an error copying the file");
}
}
}
输出
File1 copied to the given file!!
结论
在本文中,我们了解了Java中复制文件的几种方法。每种方法都相当简单直接,但最佳方法取决于您项目的具体需求。我们还通过示例程序了解了I/O流类和方法的实际实现。