学习了java的io流,发现复制文件夹没有什么太好的手段,无非就是递归的方法依次判断,然后再创建到新的文件夹,不知道有没有大神有更好的办法?下面粘一段自己写的复制文件夹的代码: public static void main(String[] args) throws IOException {
//创建新的文件夹
File fl1 = new File("D:\\新的学习包");
fl1.mkdir();
//传递参数 老的文件夹名和新的文件夹名
copyfile("D:\\学习包", fl1.getPath());
}
public static void copyfile(String oldpath, String newpath)
throws IOException {
File fl = new File(oldpath);
//循环判断是否是文件,通过字节流复制
File[] files = fl.listFiles();
for (File item : files) {
if (item.isDirectory()) {
File newfile = new File(newpath + "\\" + item.getName());
newfile.mkdir();
copyfile(item.getPath(), newfile.getPath());
} else {
InputStream input = new FileInputStream(item.getPath());
DataInputStream dis = new DataInputStream(input);
OutputStream output = new FileOutputStream(newpath + "\\"
+ item.getName());
DataOutputStream dos = new DataOutputStream(output);
int num = 0;
while ((num = dis.read()) != -1) {
dos.write(num);
}
dis.close();
dos.close();
}
}
}
|
|