package work; import org.junit.Test; import unilt.IOunilt; import java.io.*; import java.util.Scanner; /** * //根据键盘输入一个目录,拷贝到指定的目录中 */ public class Demo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个目录"); String num = sc.next(); System.out.println("请输入到指定的目录"); String num1 = sc.next(); //如果目录不存在,创建一个目录 cp(num,num1); } public static void cp(String str,String srr){//str是输入的目录,srr是指定的目录 //输入的目录 File f1 = new File(str); //指定的目录 File f2; //获取目录下的子目录和文件 File[] f = f1.listFiles(); //在指定目录下拼接下级目录 srr = srr+"\\"+f1.getName(); //拼接的目录传给f2 f2 = new File(srr); f2.mkdirs(); for (int i = 0; i < f.length; i++) { if (f[i].isDirectory()){ cp(f[i].getAbsolutePath(),srr);//使用递归相对路径 }else { srr = srr+"\\"+f1.getName(); f2 = new File(srr); copyFile(f[i],f2); } } } /** * * @param f1 * @param f2 * @throws Exception */ public static void copyFile(File f1,File f2){ BufferedInputStream bi = null; BufferedOutputStream bd = null; try { bi = new BufferedInputStream(new FileInputStream(f1)); bd = new BufferedOutputStream(new FileOutputStream(f2)); byte[] b = new byte[1024]; int len; while ((len = bi.read(b)) != -1){ bd.write(b,0,len); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { IOunilt.closeAll(bi,bd); } } }