实现文件夹或文件的复制

来源:互联网 发布:多张同样表格数据汇总 编辑:程序博客网 时间:2024/05/21 09:04

 

这里呢,我使用的方法是这样的,先列出当前文件下的所有文件,在遍历这些文件,如果是文件夹,那么创建一个文件夹,并递归遍历该文件,如果是文件,那直接复制就OK了。

下面看例子:

  import java.io.*;  /*   * 复制文件或文件夹   * */  public class Text {  public static void main(String[] args) throws Exception  {  File file = new File("C:\\新建文件夹"); //源文件或文件夹  File file2 = new File("C:\\新建文件夹_2");  //目标文件    method(file,file2); //复制  }  //复制文件或文件夹  public static void method(File file,File file2) throws Exception  {  if(!file.exists())  //如果所复制的文件或文件夹不存在  {  System.out.println("所复制文件源不存在");  return;  }  if(file.isFile())  //如果是一个文件  {  copyfile(file.getAbsolutePath(),  file.getParent()+File.separator+"复制文件__"+file.getName());  return;  }    if(file.isDirectory())  //如果是一个文件夹  {  file2.mkdir();//建立对应的文件夹  }    File[] files = file.listFiles(); //返回当前文件夹下的所有文件及文件目录    for(int i=0;i<files.length;i++)  {  if(files[i].isDirectory())  //如果是文件夹  {  copyfiles(files[i].getAbsoluteFile(),file2.getAbsoluteFile());  //进行文件夹的复制  }  else  //进行文件的复制  {  copyfile(files[i].getAbsoluteFile(),file2.getAbsolutePath()+File.separator+files[i].getName());  }  }  }  /*   * 复制文件   * String in 源文件   * String out  目标文件   * */  public static void copyfile(File infile,String outfile) throws Exception  {  FileInputStream fis = new FileInputStream(infile); //源文件    FileOutputStream fos = new FileOutputStream(new File(outfile)); //目标文件    byte[] by = new byte[1024];  int len;  while((len=fis.read(by))!=-1)  {  fos.write(by);  }  fis.close();  fos.close();  }  /*   * 复制文件夹   * File in  源文件夹   * File out  目标文件夹   */  public static void copyfiles(File in,File out) throws Exception  {  if(!in.isDirectory())  System.out.println("所复制的不是一个文件夹");  else  {  String fileName = in.getName();  out = new File(out+File.separator+fileName);  out.mkdir();  }  File[] files = in.listFiles();  for(int i=0;i<files.length;i++)  {  if(files[i].isDirectory())  {  copyfiles(files[i].getAbsoluteFile(),out.getAbsoluteFile());  }  else  copyfile(files[i].getAbsolutePath(),out.getAbsolutePath()+File.separator+files[i].getName());  }  }  }


如果是使用下面这种方式来找出相关的文件时

  File [ ]  file = file2.listFiles(new FileFilter() {
           public boolean accept(File pathname)  {   
           return pathname.getName().endsWith(".java");
          }  
  });

 这个只是返回当前文件夹下的,如果使用到了递归文件夹,这个方法好像进不了子文件夹。

 

0 0
原创粉丝点击