1. 程式人生 > >JAVA利用位元組流完成拷貝資料夾。

JAVA利用位元組流完成拷貝資料夾。

利用IO流中的位元組輸入輸出流  完成拷貝資料夾

package com.decorator;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDirDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			CopyDirUtil.copyDir(new File("E:\\ff"), new File("F:\\cc"));
			System.out.println("success!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
class CopyDirUtil{
	public static void copyDir(File src,File dst) throws IOException{
		//這裡傳入的兩個引數  一個是原始檔夾,一個是目標資料夾
		dst.mkdirs();//這個方法如果要建立E:\\aa\\bb  若沒有aa資料夾   會自動建立aa 再建立bb
		//dst.mkdir();這個方法如果要建立E:\\aa\\bb  若沒有aa資料夾   會報錯
		if(src!=null){//如果原始檔存在
			File[] files = src.listFiles();//遍歷原始檔夾中的檔案或目錄
			if(files!=null){//files不為空,這裡的意思就是如果原始檔夾不為空
				for(File f:files){//遍歷資料夾中的內容
					//如果f是檔案,複製檔案   用位元組流來複制
					if(f.isFile()){
						FileInputStream fiStream=new FileInputStream(f);//讀f
						FileOutputStream foStream=new FileOutputStream(
								dst.getAbsolutePath()+"\\"+f.getName());//拷貝到目標資料夾
						byte[] buff=new byte[1024*1024];//自定義一個位元組緩衝區
						int len=0;//儲存的讀到的位元組的個數
						while((len=fiStream.read(buff))!=-1){
							foStream.write(buff,0,len);
							
						}
						fiStream.close();//關閉讀資源
						foStream.close();//關閉寫資源
						
					}else{//如果f不是檔案  則遞迴
						copyDir(f,new File(dst.getAbsolutePath()+"\\"+f.getName()));;
					}
				}
			}
		}
	}
}