package cn.itcast_04; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; /* * 需求:复制指定目录下的指定文件,并修改后缀名。 * 指定文件是:java文件 * 指定后缀名是:.jad * 指定目的目录是:jad * * 数据源:e:\\javas\\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:\\javas"); File destFolder = new File("e:\\jad"); // 如果该文件夹不存在就创建该文件夹 if (!destFolder.exists()) { destFolder.mkdir(); } // 获取该目录下的java文件的File数组 File[] fileArray = srcFolder.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return new File(dir, name).isFile() && name.endsWith(".java"); } }); for (File file : fileArray) { // System.out.println(file); // 数据源:e:\\javas\DataTypeDemo.java // 目的地:e:\\jad\DataTypeDemo.java String name = file.getName(); File newFile = new File(destFolder, name); // 把该File进行复制 copyFile(file, newFile); } // 在目的地目录下改名 File[] destFileArray = destFolder.listFiles(); for (File destFile : destFileArray) { // System.out.println(file); // e:\\javas\\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); } } public static void copyFile(File file, File newFile) throws IOException { // 封装数据源 BufferedReader br = new BufferedReader(new FileReader(file)); // 封装目的地 BufferedWriter bw = new BufferedWriter(new FileWriter(newFile)); // 读写数据 String line = null; while ((line = br.readLine()) != null) { bw.write(line);// 写一行数据 bw.newLine();// 跟据系统属性换行 bw.flush();// 刷新缓存 } // 释放资源 bw.close(); br.close(); } }