文件夾的復制我們很好做,但是文件夾嵌套文件夾及內容就不怎么號構思了
那么我們就需要用到遞歸函數,自己調用自己的方法就可以做到了
代碼如下
/** * 文件夾拷貝(文件內含有文件和文件夾) */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class Ioliu { //主入口 public static void main(String[] args) throws Exception { //復制方法 copy("fuzi1","fuzi2"); //打印完成 System.out.println("文件拷貝完成!"); } //復制方法 public static void copy(String src, String des) throws Exception { //初始化文件復制 File file1=new File(src); //把文件里面內容放進數組 File[] fs=file1.listFiles(); //初始化文件粘貼 File file2=new File(des); //判斷是否有這個文件有不管沒有創建 if(!file2.exists()){ file2.mkdirs(); } //遍歷文件及文件夾 for (File f : fs) { if(f.isFile()){ //文件 fileCopy(f.getPath(),des+"\\"+f.getName()); //調用文件拷貝的方法 }else if(f.isDirectory()){ //文件夾 copy(f.getPath(),des+"\\"+f.getName());//繼續調用復制方法 遞歸的地方,自己調用自己的方法,就可以復制文件夾的文件夾了 } } } /** * 文件復制的具體方法 */ private static void fileCopy(String src, String des) throws Exception { //io流固定格式 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(des)); int i = -1;//記錄獲取長度 byte[] bt = new byte[2014];//緩沖區 while ((i = bis.read(bt))!=-1) { bos.write(bt, 0, i); } bis.close(); bos.close(); //關閉流 } }
這樣就寫好了文件夾的復制了
copy("fuzi1","fuzi2");
以后需要也可以直接調用了
