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();
    }
  }
}

IO操作文件的复制与删除的更多相关文章

  1. java文件和文件夹复制、删除、移动操作

    java文件和文件夹复制.删除.移动操作 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS ...

  2. java操作文件的创建、删除、遍历

    java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...

  3. C++ 文件的复制、删除、重命名

    一.文件的复制 #include <iostream>#include <fstream>using namespace std; int CopyFile(char *Sou ...

  4. Linux文件的复制、删除和移动命令

    cp命令  功能:将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大.  语法:cp [选项] 源文件或目录 目标文件或目录  说明:该命令把指定的源文件复制到目 ...

  5. C#基础-文件夹复制与删除

    代码来源:http://blog.163.com/u_tommy_520/blog/static/20406104420147493933662/ 最近做MVC网站时刚好用到,用以提供一个完整的文件夹 ...

  6. 16 IO操作文件读写

    IO的分类 第一种分法: 1.输入流 2.输出流 第二种分法: 1.字节流 2.字符流 第三种分法: 1.节点流 2.处理流 I/O当中的核心类: InputStream  <--------F ...

  7. C++操作文件行(读取,删除,修改指定行)

    /******************************************************** Copyright (C), 2016-2018, FileName: main A ...

  8. HDFS操作--文件上传/创建/删除/查询文件信息

    1.上传本地文件到HDFS //上传本地文件到HDFS public class CopyFile { public static void main(String[] args) { try { C ...

  9. shutil模块---文件,文件夹复制、删除、压缩等处理

    shutil模块:高级的文件,文件夹,压缩包处理 拷贝内容 # shutil.copyfileobj(open('example.ini','r'),open('example.new','w')) ...

随机推荐

  1. css笔记 - 张鑫旭css课程笔记之 float 篇

    https://www.imooc.com/t/197450float float的设计初衷/原本作用-是为了实现文字环绕效果如,一个图片和一段文字垂直放置,给图片加上浮动,文字就环绕图片展示了. 浮 ...

  2. 利用腾讯云COS云对象存储定时远程备份网站

    版权声明:本文由张戈 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/942851001487125915 来源:腾云阁 h ...

  3. 原生js--cookie操作的封装

    封装cookie的操作:查询cookie个数.查询所有cookie的键.获取cookie.设置cookie.删除cookie.清除全部cookie /** * cookieStorage */func ...

  4. Rsync未授权访问漏洞的利用和防御

    首先Rsync未授权访问利用 该漏洞最大的隐患在于写权限的开启,一旦开启了写权限,用户就可以,用户就可以利用该权限写马或者写一句话,从而拿到shell. 我们具体来看配置文件的网相关选项(/etc/r ...

  5. vscode 修改(自定义)插件的快捷键

    简单的使用了一下vscode,已经感受到了它的强大. 修改插件的快捷键: 1.快捷键command+k 按完之后再按command+s,弹出一个快捷键列表(code->首选项->键盘快捷方 ...

  6. magent实现memcached集群的一个问题

    之前我们小组封装了一个memcached类库,里面有一个名为RemoveStartWith的方法可以根据起始字符串删除所有节点中负责键值规则的缓存项.它实现的原理就是通过stats命令获取每个节点的所 ...

  7. 关于数据库DB负载均衡的初步研究(二)

    负载均衡: 是什么:有一组服务器由路由器联系在一起,各个节点相互协作,共同负载,均衡压力. 实现原理:应用程序与DB之间有个中央控制台服务器,根据负载均衡策略决定访问哪一台DB服务器. DB服务器:读 ...

  8. minix中atoi、atol、atof的实现

    在minix2.0源代码中,有将字符串类型转换为int.long.double类型的函数实现,相关的实现函数分别在atoi.c.atol.c.atof.c文件中,我们来逐一学习其中的源码: 1.int ...

  9. Java虚拟机八 分析Java堆

    常见的内存溢出的原因及其解决思路 1.堆溢出: 由于大量的对象都直接分配在堆上,因此它最有可能发生溢出.因为大量对象占据了堆空间,而这些对象都持有强引用,导致无法回收,当对象大小之和大于堆空间时就会发 ...

  10. jquery的$.each如何退出循环和退出本次循环

    https://api.jquery.com/jQuery.each/ We can break the $.each() loop at a particular iteration by maki ...