windows操作系统中可以复制文件夹,比如把D:\\from\\day11文件夹,复制到E:\\to\\day11文件夹下。但是java没有提供直接复制文件夹的方法.请编写程序从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
时间: 2023-08-03 12:11:51 浏览: 202
可以使用Java的File类来实现文件夹的复制。以下是一个实现文件夹复制的示例代码:
```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 fromPath = args[0];
String toPath = args[1];
// 调用复制方法
try {
copyFolder(new File(fromPath), new File(toPath));
System.out.println("文件夹复制成功!");
} catch (IOException e) {
System.out.println("文件夹复制失败:" + e.getMessage());
}
}
/**
* 复制文件夹及其内容
*
* @param fromFile 源文件夹
* @param toFile 目标文件夹
* @throws IOException
*/
public static void copyFolder(File fromFile, File toFile) throws IOException {
// 如果源文件夹不存在,则直接返回
if (!fromFile.exists()) {
return;
}
// 如果目标文件夹不存在,则创建
if (!toFile.exists()) {
toFile.mkdirs();
}
// 遍历源文件夹中的所有文件和子文件夹,并逐一复制到目标文件夹中
File[] files = fromFile.listFiles();
for (File file : files) {
if (file.isFile()) {
// 如果是文件,则直接复制
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(toFile, file.getName()));
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
} else if (file.isDirectory()) {
// 如果是子文件夹,则递归调用复制方法
copyFolder(file, new File(toFile, file.getName()));
}
}
}
}
```
该程序从命令行接收两个文件夹路径,调用`copyFolder`方法实现文件夹及其内容的复制。`copyFolder`方法首先判断源文件夹是否存在,若不存在则直接返回;然后判断目标文件夹是否存在,若不存在则创建。接着遍历源文件夹中的所有文件和子文件夹,并逐一复制到目标文件夹中。如果遍历到的是文件,则直接复制;如果遍历到的是子文件夹,则递归调用`copyFolder`方法实现子文件夹的复制。
阅读全文