简述
使用java语言在windows操作系统下对文件夹进行复制操作
基本单元 文件复制
参数说明
file是指被复制的是文件
directory是指要被复制到的目录
public static void copyFile(File file, File directory) {
try {
FileInputStream input = new FileInputStream(file);
FileOutputStream output = new FileOutputStream(new File(directory, file.getName()));
byte[] buff = new byte[8192];
int len = -1;
while ((len = input.read(buff)) > -1) {
output.write(buff);
}
input.close();
output.close();
} catch (Exception e) {
}
}
文件夹遍历
参数说明 file被复制目录(也可以是文件) target目标目录
使用递归遍历file 这里可以理解遇到文件夹就调用自己 遇到文件就调用上面那个方法 非常简单的逻辑
public static void copy(File file, File target) {
target = new File(target, file.getName());
if (!target.exists()) target.mkdirs();
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()) copy(f, target);
else copyFile(f, target);
}
} else {
copyFile(file, target);
}
}
最终效果
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Demo {
public static void main(String[] args) {
copy(new File("D:\\desktop\\temp"), new File("D:\\desktop\\abc"));
}
public static void copy(File file, File target) {
target = new File(target, file.getName());
if (!target.exists()) target.mkdirs();
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()) copy(f, target);
else copyFile(f, target);
}
} else {
copyFile(file, target);
}
}
public static void copyFile(File file, File directory) {
try {
FileInputStream input = new FileInputStream(file);
FileOutputStream output = new FileOutputStream(new File(directory, file.getName()));
byte[] buff = new byte[8192];
int len = -1;
while ((len = input.read(buff)) > -1) {
output.write(buff);
}
input.close();
output.close();
} catch (Exception e) {
}
}
}