자바 재 귀적 복사 폴 더 및 폴 더 사용

재 귀적 으로 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();
      }
    }
  }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기