1. 程式人生 > >java基礎-檔案複製,修改後綴名

java基礎-檔案複製,修改後綴名

package file;

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
 * 資料來源:d:\\java\\CopyFolderDemo.java
 * 目的地:d:\\jad\\CopyFolderDemo.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("d:\\java");
		// 封裝目的地
		File destFolder = new File("d:\\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);
			// 資料來源:d:\java\
			// 目的地:d:\\jad\
			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);
			// d:\jad\\
			// d:\\jad\\
			String name =destFile.getName(); 
			String newName = name.replace(".java", ".jad");
			
			File newFile = new File(destFolder,newName);
			destFile.renameTo(newFile);
		}
		System.out.println("OK!");
	}

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