java字节流实现整个文件夹复制
时间: 2023-09-13 20:05:27 浏览: 39
好的,下面是 Java 字节流实现整个文件夹复制的代码示例:
```java
import java.io.*;
public class FolderCopy {
public static void main(String[] args) throws IOException {
File sourceFolder = new File("sourceFolder"); // 源文件夹路径
File targetFolder = new File("targetFolder"); // 目标文件夹路径
if (!targetFolder.exists()) {
targetFolder.mkdir(); // 如果目标文件夹不存在,创建目标文件夹
}
File[] files = sourceFolder.listFiles(); // 获取源文件夹下的所有文件和文件夹
for (File file : files) {
if (file.isFile()) { // 如果是文件,直接复制
FileInputStream in = new FileInputStream(file);
FileOutputStream out = new FileOutputStream(targetFolder + "\\" + file.getName());
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
in.close();
out.close();
} else if (file.isDirectory()) { // 如果是文件夹,递归调用复制方法
File newFolder = new File(targetFolder + "\\" + file.getName());
newFolder.mkdir();
FolderCopy.copyFolder(file, newFolder);
}
}
System.out.println("文件夹复制成功!");
}
public static void copyFolder(File sourceFolder, File targetFolder) throws IOException {
if (!targetFolder.exists()) {
targetFolder.mkdir(); // 如果目标文件夹不存在,创建目标文件夹
}
File[] files = sourceFolder.listFiles(); // 获取源文件夹下的所有文件和文件夹
for (File file : files) {
if (file.isFile()) { // 如果是文件,直接复制
FileInputStream in = new FileInputStream(file);
FileOutputStream out = new FileOutputStream(targetFolder + "\\" + file.getName());
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
in.close();
out.close();
} else if (file.isDirectory()) { // 如果是文件夹,递归调用复制方法
File newFolder = new File(targetFolder + "\\" + file.getName());
newFolder.mkdir();
FolderCopy.copyFolder(file, newFolder);
}
}
}
}
```
其中,`File` 代表文件或文件夹,`File.listFiles()` 方法返回该文件夹下所有文件和文件夹的数组。我们通过遍历数组,如果发现是文件直接复制,如果发现是文件夹则递归调用自己的复制方法。在复制文件时,我们使用相同的字节流复制文件。最后,我们输出复制成功的提示信息。