java复习

2020-07-04复制文件夹

2020-07-08  本文已影响0人  智障猿

复制单级文件夹

 public static void main(String[] args) throws IOException {
        //创建数据源目录File对象,路径是E:\\test
        File dis = new File("E:\\test");
        //获取数据源目录File对象的名称 (itcast)
        String disName = dis.getName();
        //创建目的地目录File对象,路径名(自拟)
        String path = "test\\"+disName;
        File dos =new File(path);
        //判断目的地File对象对应的目录是否存在,如果不存在就创建
        if(!dos.exists()){
            dos.mkdir();
        }
        //获取数据源目录下所以的File数组
        File[] listFiles = dis.listFiles();
        //遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
        for (File f: listFiles) {
            //获取数据源文件File对象的名称
            String srcname = f.getName();
            //创建目的地文件File对象,路径名为目的地+文件File对象名称
            File dosfile = new File(dos,srcname);
            //复制文件
            copy(f,dosfile);
        }

    }
 public static void copy(File src,File dos) throws IOException {
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(src));
        BufferedOutputStream bufferedOutputStream =new BufferedOutputStream(new FileOutputStream(dos));
        byte[] bytes = new byte[1024];
        int len;
        while((len = bufferedInputStream.read(bytes))!=-1){
            bufferedOutputStream.write(bytes);
        }
        bufferedInputStream.close();
        bufferedOutputStream.close();

 }

复制多级文件夹(递归)

public static void main(String[] args) throws IOException {
        File file  = new File("E:\\test");
        File dosfile  = new File("F:\\");
        copyFolder(file,dosfile);
    }
public static void copyFolder(File srcFiles,File desFile) throws IOException {
        //判断数据源是否是目录
        if (srcFiles.isDirectory()){
            //在目的地下创建和数据源file名称一样的目录
            String srcFileName = srcFiles.getName();
            File newFolder = new File(desFile,srcFileName);
            if (!newFolder.exists()){
                newFolder.mkdir();
            }
            //获取数据源File下所有文件或者目录的File数组
            File[] listFiles = srcFiles.listFiles();
            for (File file:listFiles){
                //把该File作为数据源File对象,递归调用复制文件夹的方法
                copyFolder(file,newFolder);
            }
        }else {
            //说明是文件,直接复制,用字节流
            File newFile = new File(desFile,srcFiles.getName());
            copyFile(srcFiles,newFile);
        }
    }
public static void copyFile(File srcFile,File desFile) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desFile));
        byte[] bytes = new byte[1024];
        int len;
        while ((len=bis.read(bytes))!=-1){
            bos.write(bytes);
  }
        bis.close();
        bos.close();
  }
上一篇下一篇

猜你喜欢

热点阅读