java使用递归复制文件夹及文件夹-kb88凯时官网登录

时间:2020-05-14
阅读:
免费资源网,https://freexyz.cn/

递归调用copydir方法实现,查询源文件目录使用字节输入流写入字节数组,如果目标文件目录没有就创建目录,如果迭代出是文件夹使用字节输出流对拷文件,直至源文件目录没有内容。

/**
   * 复制文件夹
   * @param srcdir 源文件目录
   * @param destdir 目标文件目录
   */
  public static void copydir(string srcdir, string destdir) {
    if (srcroot == null) srcroot = srcdir;
    //源文件夹
    file srcfile = new file(srcdir);
    //目标文件夹
    file destfile = new file(destdir);
    //判断srcfile有效性
    if (srcfile == null || !srcfile.exists())
      return;
    //创建目标文件夹
    if (!destfile.exists())
      destfile.mkdirs();
    //判断是否是文件
    if (srcfile.isfile()) {
      //源文件的绝对路径
      string abspath = srcfile.getabsolutepath();
      //取出上级目录
      string parentdir = new file(srcroot).getparent();
      //拷贝文件
      copyfile(srcfile.getabsolutepath(), destdir);
    } else {  //如果是目录
      file[] children = srcfile.listfiles();
      if (children != null) {
        for (file f : children) {
          copydir(f.getabsolutepath(), destdir);
        }
      }
    }
  }
/**
   * 复制文件夹
   *
   * @param path  路径
   * @param destdir 目录
   */
  public static void copyfile(string path, string destdir) {
    fileinputstream fis = null;
    fileoutputstream fos = null;
    try {
       /*
        准备目录
        取出相对的路径
        创建目标文件所在的文件目录
       */
      string tmp = path.substring(srcroot.length());
      string folder = new file(destdir, tmp).getparentfile().getabsolutepath();
      file destfolder = new file(folder);
      destfolder.mkdirs();
      system.out.println(folder);      //创建文件输入流
      fis = new fileinputstream(path);
      //定义新路径
      //创建文件 输出流
      fos = new fileoutputstream(new file(destfolder,new file(path).getname()));
      //创建字节数组进行流对拷
      byte[] buf = new byte[1024];
      int len = 0;
      while ((len = fis.read(buf)) != -1) {
        fos.write(buf, 0, len);
      }
    } catch (ioexception ex) {
      ex.printstacktrace();
    } finally {
      try {
        fis.close();
        fos.close();
      } catch (ioexception e) {
        e.printstacktrace();
      }
    }
  }
免费资源网,https://freexyz.cn/
返回顶部
顶部
网站地图