首页 > 代码库 > java复制文件与文件夹

java复制文件与文件夹

            复制文件或文件夹时,可以写一个方法,接受两个File类型参数。一个是要复制的文件,另一个是要复制的地方。方法具体大概是这样,先判断 源文件是文件还是文件夹,如是文件,就在目标路径里用字节流复制该文件。关键在于如何在目标路径里复制文件。可以创建一个File对象参数为目标对象+源文件.getName()。如果是文件夹,就在目标路径里复制一个文件夹,即创建一个File对象构造参数为目标+源文件路径.getName. 在用File对象的 mkdir 在本地创建文件夹。 然后获取要复制的文件夹中的文件。遍历这个文件数组。开始递归。是文件就复制文件,是文件夹就复制文件夹,获取文件夹里的文件继续。直到没有文件夹为止。

代码

package com.IO.www;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MyMdir {

 public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  File f=new File("D:\\JVM");
  File f1=new File("C:");
  CopyFile(f, f1);
   
 
 }//复制文件或文件的方法
 private static void CopyFile(File src,File target) {
  if(src.exists()){
   //判断路径表示的是否是目录,如是
   if(src.isFile()){
    //在目标路径里创建该文件复制文件
    File file=new File(target+"\\"+src.getName());
    //如果该路径代表的文件已存在,则另起他名。我用的是win的方式加复制文件二字。
    if(file.exists()){
     file=new File(target+"\\"+"复制文件"+System.currentTimeMillis()+src.getName());
    }
    BufferedInputStream bin=null;
    BufferedOutputStream bout=null;
    try{
     bin=new BufferedInputStream(new FileInputStream(src));
     bout=new BufferedOutputStream(new FileOutputStream(file));
     byte buf[]=new byte[1024];
     int len=0;
     while((len=bin.read(buf))!=-1){
      bout.write(buf, 0, len);
     }
    }catch(IOException e){
     e.printStackTrace();
     System.out.println("文件复制失败");
    }finally{
     if(bin!=null){
      try {
       bin.close();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }if(bout!=null){
      try {
       bout.close();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
    }
    //判断目标是否是文件夹,如是
   }if(src.isDirectory()){
    //创建在目标路劲里原路径的文件夹对象
    File file=new File(target+"\\"+src.getName());
    if(file.exists()){
     file=new File(target+"\\"+"复制文件夹"+System.currentTimeMillis()+src.getName());
    }
    //在本地创建文件夹
    file.mkdir();
    //获取文件夹中的文件
    File[]files=src.listFiles();
    for(File f:files){
     //递归,再次复制文件或文件夹
     CopyFile(f,file);
    }
   }
  }else{
   System.out.println("您要复制的文件不存在");
  }

 }
}