要使用IO流复制文件夹,你需要遵循以下步骤:
1. 创建一个新的目标文件夹,用于存储复制后的文件夹。
2. 遍历源文件夹中的所有文件和子文件夹。
3. 如果当前遍历到的是文件夹,则递归地调用复制文件夹的方法。
4. 如果当前遍历到的是文件,则进行文件的复制操作。
下面是一个使用IO流复制文件夹的示例代码:
import java.io.*;
public class FolderCopyExample {
public static void main(String[] args) {
String sourceFolder = "path/to/source/folder";
String destinationFolder = "path/to/destination/folder";
// 调用复制文件夹的方法
copyFolder(sourceFolder, destinationFolder);
}
public static void copyFolder(String sourceFolder, String destinationFolder) {
File source = new File(sourceFolder);
File destination = new File(destinationFolder);
// 如果源文件夹不存在,则退出
if (!source.exists()) {
System.out.println("源文件夹不存在!");
return;
}
// 如果目标文件夹不存在,则创建它
if (!destination.exists()) {
destination.mkdir();
System.out.println("目标文件夹已创建!");
}
// 获取源文件夹中的所有文件和子文件夹
File[] files = source.listFiles();
if (files != null) {
// 遍历源文件夹中的所有文件和子文件夹
for (File file : files) {
if (file.isDirectory()) {
// 如果当前遍历到的是文件夹,则递归调用复制文件夹的方法
copyFolder(file.getAbsolutePath(), destinationFolder + "/" + file.getName());
} else {
// 如果当前遍历到的是文件,则进行文件的复制操作
copyFile(file.getAbsolutePath(), destinationFolder + "/" + file.getName());
}
}
System.out.println("文件夹复制完成!");
}
}
public static void copyFile(String sourceFilePath, String destinationFilePath) {
try {
InputStream inputStream = new FileInputStream(sourceFilePath);
OutputStream outputStream = new FileOutputStream(destinationFilePath);
byte[] buffer = new byte[1024];
int length;
// 读取源文件并写入目标文件
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
请将代码中的 `path/to/source/folder` 和 `path/to/destination/folder` 替换为实际的源文件夹路径和目标文件夹路径。
这段代码首先检查源文件夹是否存在,如果不存在则直接退出。然后,它创建目标文件夹(如果不存在)。接下来,它遍历源文件夹中的所有文件和子文件夹。如果当前遍历到的是文件夹,则递归调用复制文件夹的方法。如果当前遍历到的是文件,则调用复制文件的方法。
复制文件的方法使用了输入流(InputStream)和输出流(OutputStream)来读取和写入文件的内容。它使用一个缓冲区来提高效率,每次从输入流中读取一定数量的字节,并将它们写入输出流中。
领取专属 10元无门槛券
私享最新 技术干货