IO操作文件的复制与删除

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.junit.Test;


public class Delete {
/*
把d:/mywork复制成c:/mywork
写程序删除目录c:/mywork, delete()?
递归
*/

public void deleteDir(File dir){
  //清空目录
  System.out.println("删除目录:" + dir);
  File[] listFiles = dir.listFiles();
  for(int i = 0;i < listFiles.length;i++){
    if(listFiles[i].isFile()){//测试此抽象路径名表示的文件是否是一个标准文件。
      //如果是文件,直接删除
      listFiles[i].delete();  
    }else if(listFiles[i].isDirectory()){//检查此路径是不是目录
      deleteDir(listFiles[i]);
      //因为子目录也是目录, 继续调用删除目录的方法即可
    }
  }
    dir.delete();//只能删除空目录
}

  @Test
  public void delete(){
    File file = new File("c:/xxxx");//此处填写文件名
    deleteDir(file);
  }

  public void copyDir(File dir1,File dir2) throws IOException{
    System.out.println("复制目录:" + dir1 + "到" + dir2);
    //新建目标目录
    dir2.mkdir();
    //遍历源目录,把其中的内容复制到目标目录中
    File[] listFiles = dir1.listFiles();// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
    for(int i = 0;i < listFiles.length;i++){
      if(listFiles[i].isFile()){
      //文件复制
        File f1 = listFiles[i];
        File f2 = new File(dir2.getAbsolutePath() + "/" + f1.getName());
        copyFile(f1,f2);
      }else if(listFiles[i].isDirectory()){
        copyDir(listFiles[i],new File(dir2.getAbsolutePath() + "/" + listFiles[i].getName()));
      }
    }
  }

   private void copyFile(File f1,File f2) throws IOException{
     FileInputStream fis = new FileInputStream(f1);
     FileOutputStream fos = new FileOutputStream(f2);
     byte[] buf = new byte[8192];
     int realCount = fis.read(buf);
     while (realCount != -1) {
       fos.write(buf,0,realCount);
       realCount = fis.read(buf);

     }
      fis.close();
      fos.close();
  }

   @Test
  public void copy(){
    File dir1 = new File("路径");
    File dir2 = new File("路径");
    try {
        copyDir(dir1, dir2);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

原文地址:https://www.cnblogs.com/qianji/p/6648784.html