import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;

/*
* 需求:复制指定目录下的指定文件,并修改后缀名。
* 指定的文件是:.java文件。
* 指定的后缀名是:.jad
* 指定的目录是:jad
*
* 数据源:e:\\java\\A.java
* 目的地:e:\\jad\\A.jad
*
* 分析:
* A:封装目录
* B:获取该目录下的java文件的File数组
* C:遍历该File数组,得到每一个File对象
* D:把该File进行复制
* E:在目的地目录下改名
*/
public class CopyFolderDemo {
  public static void main(String[] args) throws IOException {
    // 封装目录
    File srcFolder = new File("e:\\java");
    // 封装目的地
    File destFolder = new File("e:\\jad");
    // 如果目的地目录不存在,就创建
    if (!destFolder.exists()) {
      destFolder.mkdir();
    }

    // 获取该目录下的java文件的File数组
    File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
      @Override
      public boolean accept(File dir, String name) {
        return new File(dir, name).isFile() && name.endsWith(".java");
      }
    });

    // 遍历该File数组,得到每一个File对象
    for (File file : fileArray) {
      // System.out.println(file);
      // 数据源:e:\java\DataTypeDemo.java
      // 目的地:e:\\jad\DataTypeDemo.java
      String name = file.getName();
      File newFile = new File(destFolder, name);
      copyFile(file, newFile);
    }

    // 在目的地目录下改名
    File[] destFileArray = destFolder.listFiles();
    for (File destFile : destFileArray) {
      // System.out.println(destFile);
      // e:\jad\DataTypeDemo.java
      // e:\\jad\\DataTypeDemo.jad
      String name =destFile.getName(); //DataTypeDemo.java
      String newName = name.replace(".java", ".jad");//DataTypeDemo.jad

      File newFile = new File(destFolder,newName);
      destFile.renameTo(newFile);
    }
  }

  private static void copyFile(File file, File newFile) throws IOException {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));

    byte[] bys = new byte[1024];
    int len = 0;
    while ((len = bis.read(bys)) != -1) {
      bos.write(bys, 0, len);
    }

    bos.close();
    bis.close();
  }
}

最新文章

  1. Android 手机卫士--获取联系人信息并显示与回显
  2. [python实现设计模式]-5.迭代器模式-一起撸串嗨皮啦
  3. React Native填坑之旅--LayoutAnimation篇
  4. 手机wifi密码的保存位置
  5. Burpsuite教程与技巧之HTTP brute暴力破解
  6. 贪心 HDOJ 4726 Kia's Calculation
  7. CSS3 Transform Matrix
  8. android 回调函数的使用
  9. jcarousellite 实现图片列表滚动
  10. sqlite数据库读写在linux下的权限问题
  11. linux segmentation fault记录
  12. 70、django之Ajax初识
  13. sqlsever 科学计数法 转标准值
  14. centOS7.3安装配置NFS服务
  15. 将ant Design本地化,可通过link以及script直接引入html中使用
  16. Axure 设置条件的操作
  17. LRN
  18. LeetCode: Roman to Integer 解题报告
  19. [转] CSocket 和CAsyncSocket类介绍
  20. IOS开发使用GCD后台运行

热门文章

  1. Ansible Playbook 简介
  2. Unity弹出MessageBox
  3. 【译】Kafka最佳实践 / Kafka Best Practices
  4. Kafka一些常见资源汇总
  5. 关于GDI+的一些使用基础设置
  6. Java网络编程之查找Internet地址
  7. django进阶-modelform&admin action
  8. 浅谈CSS盒子模型
  9. Big Spatio temporal Data(R-tree Index and NN & RNN & Skyline)
  10. 题目1076:N的阶乘(大数乘法)