IO流_複製指定目錄下指定字尾名的檔案並修改名稱案例
阿新 • • 發佈:2018-12-31
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(); } }