windows操作系统中可以复制文件夹,比如把D:\\from\\day11文件夹,复制到E:\\to\\day11文件夹下。 // 但是java没有提供直接复制文件夹的方法.请编写程序从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
时间: 2023-08-03 22:11:51 浏览: 114
可以使用递归的方式来实现文件夹的复制。具体步骤如下:
1. 从键盘输入源文件夹和目标文件夹的路径。
2. 判断源文件夹是否存在,如果不存在,则提示用户输入错误,并退出程序。
3. 如果目标文件夹不存在,则创建目标文件夹。
4. 获取源文件夹下所有的文件和子文件夹。
5. 遍历所有的文件和子文件夹,如果是文件,则直接复制到目标文件夹下,如果是文件夹,则递归调用复制文件夹的方法。
6. 复制完成后,输出复制成功的信息。
下面是一个实现文件夹复制的示例代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FolderCopy {
public static void main(String[] args) {
// 从键盘输入源文件夹和目标文件夹路径
String srcFolder = "D:\\from\\day11";
String destFolder = "E:\\to\\day11";
// 判断源文件夹是否存在
File srcDir = new File(srcFolder);
if (!srcDir.exists() || !srcDir.isDirectory()) {
System.out.println("源文件夹不存在或不是一个文件夹!");
return;
}
// 创建目标文件夹
File destDir = new File(destFolder);
if (!destDir.exists()) {
destDir.mkdirs();
}
// 复制文件夹
try {
copyFolder(srcDir, destDir);
System.out.println("文件夹复制完成!");
} catch (IOException e) {
System.out.println("文件夹复制失败:" + e.getMessage());
}
}
/**
* 复制文件夹
*
* @param srcDir 源文件夹
* @param destDir 目标文件夹
* @throws IOException
*/
public static void copyFolder(File srcDir, File destDir) throws IOException {
// 获取源文件夹下的所有文件和子文件夹
File[] files = srcDir.listFiles();
// 遍历所有的文件和子文件夹
for (File file : files) {
if (file.isDirectory()) {
// 如果是文件夹,则递归调用复制文件夹的方法
File newDir = new File(destDir, file.getName());
newDir.mkdirs();
copyFolder(file, newDir);
} else {
// 如果是文件,则直接复制到目标文件夹下
File newFile = new File(destDir, file.getName());
try (FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(newFile)) {
byte[] buffer = new byte[4096];
int len;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
}
}
}
}
}
```
阅读全文