/**
* 拷贝带内容的文件夹
*
* File.mkdir();
*
* 分析:
* 1把一个文件夹,拷贝到另外一个文件夹里
* src,源文件夹 , dest 目标文件夹 ,dest应该是 src的父级目录
* 2.创建文件夹 ,再拷贝文件
* File(parent , zi)
* File src_copy = new File(D:\\ , src.getName());
*
* 3.读文件 src 下的文件
* 写文件 file( src_copy , 文件名字);
*
* 4. 文件夹 ,调用自己
* (file , src_copy)
*
*/
public class CopyDirTest {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
//声明源文件路径和目标文件路径
System.out.println("输入源文件路径");
File src = new File(sc.nextLine());
System.out.println("输入目标文件路径");
File parent = new File(sc.nextLine());
//调用copy方法
dirCopy(src,parent);
}
private static void dirCopy(File src, File parent) throws IOException {
//先进行一下源文件夹和目标文件夹路径是否相同
if(src.equals(parent)){
System.out.println("这样windows删不掉,就不让你玩了");
return;
}
//创建文件夹
File src_copy = new File(parent,src.getName());
src_copy.mkdir();
//获取源文件夹所有文件
File[] files = src.listFiles();
for (File file : files) {
if (file.isFile()) { // file :
// C:\Users\ThinkPad\Desktop\中午共享\西游记\3.jpg
// 拷贝文件
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(src_copy, file.getName()))); // d:\\西游记\\3.jpg
int b;
while ((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
}else {
// 4 -- 调用自己
// 源 : file
// 目标:
dirCopy(file, src_copy);
}
}
}
} |