文件夹的复制

来源:互联网 发布:淘宝如何设置宝贝预览 编辑:程序博客网 时间:2024/06/09 13:49

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

public class DirectoryCopy {
 public void copy(File src,File des){
  if(!des.exists())
  {
   des.mkdirs();
  }
  if(src.isFile()){
   File file=new File(des.getAbsolutePath()+"/"+src.getName());
   fileCopy(src,file);
  }
  else{
   File file=new File(des.getAbsolutePath()+"/"+src.getName());
   file.mkdir();
   File[] files=src.listFiles();
   for(int i=0;i<files.length;i++){
    
    copy(files[i],file);
   }
  }
 }
 public static boolean fileCopy(File src,File des){
  if(src==null||des==null){
   System.out.println("有一文件为空");
   return false;
  }
  if(!src.exists()){
   System.out.println("源文件不存在");
   return false;
  }
  FileInputStream fis=null;
  FileOutputStream fos=null;
  try {
   fis=new FileInputStream(src);
   fos=new FileOutputStream(des);
   byte[] buffer=new byte[1024];
   int readSize=fis.read(buffer);
   while(readSize!=-1){
    if(readSize==1024){
     fos.write(buffer);
    }
    else{
     for(int i=0;i<readSize;i++){
      if(buffer[i]!=0){
       fos.write(buffer[i]);
      }else{
       break;
      }
     }
    }
    buffer=new byte[1024];
    readSize=fis.read(buffer);
   }
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
   if(fis!=null){
    try {
     fis.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if(fos!=null){
    try {
     fos.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
  
  return true;
 }
}

 

 

import java.io.File;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  DirectoryCopy directoryCopy=new DirectoryCopy();
  File src=new File("D:/a");
  File des=new File("D:/b");
  directoryCopy.copy(src, des);

 }

}

 

 

 

0 0
原创粉丝点击