java现在在D盘中放有一个名为MultiFile的文件夹,请编写程序将此文件夹下的所有文件夹和文件复制到E盘的MultiFileCopy文件夹下。 注意:要求MultiFile文件夹下至少含有三层以上的文件夹,每层文件夹中都有文件。
时间: 2023-07-29 07:05:38 浏览: 86
可以使用递归实现文件夹的复制。具体实现如下:
```java
import java.io.*;
public class FileCopy {
public static void main(String[] args) {
String sourcePath = "D:\\MultiFile";
String targetPath = "E:\\MultiFileCopy";
copyFolder(sourcePath, targetPath);
System.out.println("文件复制完成!");
}
public static void copyFolder(String sourcePath, String targetPath) {
File sourceFolder = new File(sourcePath);
File targetFolder = new File(targetPath);
// 如果目标文件夹不存在,则创建
if (!targetFolder.exists()) {
targetFolder.mkdirs();
}
// 获取源文件夹下的所有文件和文件夹
File[] files = sourceFolder.listFiles();
for (File file : files) {
// 如果是文件夹,则递归复制
if (file.isDirectory()) {
String subSourcePath = file.getAbsolutePath();
String subTargetPath = targetPath + "\\" + file.getName();
copyFolder(subSourcePath, subTargetPath);
} else {
// 如果是文件,则复制到目标文件夹下
String targetFilePath = targetPath + "\\" + file.getName();
copyFile(file, new File(targetFilePath));
}
}
}
public static void copyFile(File sourceFile, File targetFile) {
try (
InputStream inputStream = new FileInputStream(sourceFile);
OutputStream outputStream = new FileOutputStream(targetFile)
) {
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
运行程序后,就可以将D盘中的MultiFile文件夹下的所有文件和文件夹复制到E盘的MultiFileCopy文件夹下。