JAVA利用位元組流完成拷貝資料夾。
阿新 • • 發佈:2019-02-02
利用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()));;
}
}
}
}
}
}