package 練習;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
//復(fù)制整個文件夾
public class fuzhiFolder {
public static void main(String[] args) throws IOException {
File f = new File("C:\\Users\\86187\\Desktop\\藍橋資料\\學習資料"); //原文件夾
String newPath = "E:\\新建文件夾"; //復(fù)制到的目的目錄
mkdirFile(f,newPath); //調(diào)用mkdirFile方法
}
public static void mkdirFile(File file,String path) throws IOException {
File[] listFiles = file.listFiles(); //得到file文件夾下的所有文件及目錄
for (File f1 : listFiles) { //循環(huán)處理所有文件及目錄f1
if(f1.isDirectory()) { //如果f1是文件夾
File newFile = new File(path,f1.getName()); //新建一個文件夾對象(目的目錄路徑+f1的文件名)
newFile.mkdir(); //新建文件夾
mkdirFile(f1,newFile.getAbsolutePath()); //遞歸調(diào)用本方法處理新建文件夾
}else {
copyFile(f1,new File(path,f1.getName())); //如果是文件,調(diào)用copyFile方法
}
}
}
public static void copyFile(File descfile, File newfile) throws IOException {
FileInputStream in = new FileInputStream(descfile); //新建字節(jié)輸入流in
BufferedInputStream bfin = new BufferedInputStream(in); //新建緩沖的字節(jié)輸入流bfin,包含住in
FileOutputStream out = new FileOutputStream(newfile); //新建字節(jié)輸出流out
BufferedOutputStream bfout = new BufferedOutputStream(out); //新建緩沖的字節(jié)輸出流bfout,包含住out
byte[] b = new byte[1024]; //新建字節(jié)數(shù)組,作為二級緩沖區(qū)
int len;
while ((len = bfin.read(b))!= -1) { //將讀取到的b長度的內(nèi)容賦給len,并判斷是否為空
bfout.write(b,0,len); //不為空的話,將讀取到的內(nèi)容len放到b中,0是開始位置。再寫入
}
//關(guān)閉流,只需要關(guān)閉最外層流。先關(guān)輸出,再關(guān)輸入
bfout.close();
bfin.close();
}
}