IO流(9)复制指定文件夹下指定文件到目的文件夹,并改名

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

posted @ 2018-01-11 21:25  秦先生的客栈  Views(679)  Comments(0Edit  收藏  举报