文件夹拷贝
copy文件夹(CopyDir.java)
package cn.Reader; import java.io.File; import java.io.IOException; /* * 文件夹的拷贝 * 1.文件复制 Copyfile * 2.文件夹创建 mkdirs() * 3.递归查找子孙级 */ public class CopyDir { public static void main(String [] args) { String srcPath="C:/Users/Administrator/Desktop/sun/JAVA project"; //目标目录 String destPath="C:/Users/Administrator/Desktop/sun/haha"; CopyDir(srcPath,destPath); } /* * 拷贝文件夹 * src 源路径 * dest 目标路径 */ public static void CopyDir(String srcPath,String destPath) { File src=new File(srcPath); File dest=new File(destPath); CopyDir(src,dest); } //拷贝文件夹细节 public static void CopyDir(File src,File dest) { if(src.isFile()) { //文件 try { FileUtil.CopyFiles(src, dest); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if(src.isDirectory()) { //文件夹 //确保目标文件夹存在 dest.mkdirs(); //获取下一级的目录或者文件 for(File sub:src.listFiles()) { //递归遍历子孙级 CopyDir(sub,new File(dest,sub.getName())); } } } }
文件夹及文件拷贝封装(FileUtil.java)
package cn.Reader; /* * 文件操作 * 1.文件拷贝 * 2.文件夹拷贝 */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileUtil { /* * 拷贝文件夹 * src 源路径 * dest 目标路径 */ public static void CopyDir(String srcPath,String destPath) { File src=new File(srcPath); File dest=new File(destPath); CopyDir(src,dest); } //拷贝文件夹细节 public static void CopyDir(File src,File dest) { if(src.isFile()) { //文件 try { FileUtil.CopyFiles(src, dest); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if(src.isDirectory()) { //文件夹 //确保目标文件夹存在 dest.mkdirs(); //获取下一级的目录或者文件 for(File sub:src.listFiles()) { //递归遍历子孙级 CopyDir(sub,new File(dest,sub.getName())); } } } public static void CopyFiles(String srcPath,String destPath ) throws IOException { CopyFiles(new File(srcPath),new File(srcPath)); } //对该方法进行重载 public static void CopyFiles(File src,File dest ) throws IOException { if(!src.isFile()) { //不是文件或者为null System.out.println("只能拷贝文件"); throw new IOException("只能拷贝文件"); } //2.选择流 InputStream is =new FileInputStream(src); OutputStream os=new FileOutputStream(dest); //3.文件拷贝 循环 读取+写出 byte[] flush=new byte[1024]; int len=0; //读取 while(-1!=(len=is.read(flush))){ //写出 os.write(flush, 0, len); } os.flush(); //强制刷出 //关闭两个流 os.close(); //后打开的先关闭 is.close(); } public static void main(String[] args) { File src=new File("C:/Users/Administrator/Pictures/Saved Pictures/a.jpg"); File dest =new File("C:/Users/Administrator/Pictures/Saved Pictures/180.jpg"); try { CopyFiles(src,dest); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }