java现在在D盘中放有一个名为MultiFile的文件夹,请编写程序将此文件夹下的所有文件夹和文件复制到E盘的MultiFileCopy文件夹下。 注意:要求MultiFile文件夹下至少含有三层以上的文件夹,每层文件夹中都有文件。
时间: 2023-07-29 17:05:40 浏览: 75
可以使用递归的方式实现该功能,代码如下:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFiles {
public static void main(String[] args) throws IOException {
String srcFolderPath = "D:\\MultiFile";
String destFolderPath = "E:\\MultiFileCopy";
File srcFolder = new File(srcFolderPath);
File destFolder = new File(destFolderPath);
copyFolder(srcFolder, destFolder);
System.out.println("Copy finished.");
}
public static void copyFolder(File src, File dest) throws IOException {
if (src.isDirectory()) {
if (!dest.exists()) {
dest.mkdir();
}
String[] files = src.list();
for (String file : files) {
File srcFile = new File(src, file);
File destFile = new File(dest, file);
copyFolder(srcFile, destFile);
}
} else {
FileInputStream inputStream = new FileInputStream(src);
FileOutputStream outputStream = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}
}
}
```
程序首先定义了源文件夹和目标文件夹的路径,然后使用File类创建对应的File对象。接着调用copyFolder方法复制文件夹。如果当前处理的是文件夹,就在目标文件夹下创建一个同名的文件夹,然后递归调用copyFolder方法处理该文件夹下的每个文件和子文件夹。如果当前处理的是文件,就使用FileInputStream和FileOutputStream将该文件复制到目标文件夹下。最后在main方法中输出复制完成的提示信息。
阅读全文