1. 程式人生 > >IO流複製檔案並對檔案進行更名---師承劉易老師

IO流複製檔案並對檔案進行更名---師承劉易老師

package copyfloder;

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;

public class CopyFileNewname
{
    public static void main(String[] args)throws
IOException { //封裝源目錄 File srcFloder = new File("e:\\Java1"); //封裝目標目錄 File destFloder = new File("e:\\java2"); //判斷目標目錄是否存在 if(!destFloder.exists()){ destFloder.mkdir(); } //使用檔案過濾器過濾所需要的檔案,將資料夾內的檔案存入陣列使用 File[] fileArray = srcFloder.listFiles(new
FilenameFilter() { //對檔案過濾器進行重寫 @Override //dir指的是碟符名字 //name值得是檔名字 public boolean accept(File dir, String name) { //建立新的檔案採用路徑加檔名的構造方法判斷是否是檔案 //判斷檔案結尾的字元 return new File(dir,name).isFile() && name.endsWith(".java"
); } }); //增強for對檔案陣列進行處理 for(File file : fileArray){ //在新的資料夾中建立所要複製過去的檔案 File newFile = new File(destFloder, file.getName()); //複製操作 copy(file, newFile); } //對目標資料夾複製檔案進行更名操作 File[] destFileArray = destFloder.listFiles(); for(File file : destFileArray){ String name = file.getName(); String newName = name.replace(".java", ".jar"); File newNameFile = new File(destFloder,newName); file.renameTo(newNameFile); } } private static void copy(File file, File newFile)throws IOException { // TODO Auto-generated method stub //運用緩衝區方法複製檔案 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(); } }

對檔案目錄裡重新命名的理解

File[] destFileArray = destFloder.listFiles();
        for(File file : destFileArray){
            String name = file.getName();
            String newName = name.replace(".java", ".jar");
            File newNameFile = new File(destFloder,newName);
            file.renameTo(newNameFile);
        }

對檔案重新命名使用的renameTo只能對本資料夾的檔案進行重新命名,並且重新命名時他接受的是一個檔案,所以在重新命名時應該新建立一個帶有路徑和新名的檔案,是用老的檔名呼叫含有新名檔案的renameTo方法。

replace方法public String replace(char oldChar, char newChar)是字串方法會將oldchar替換掉,同時返回新的字串。

注意:File構造時注意指定原始檔夾,不然就造在本資料夾的檔案。