复制一个目录下的所有文件到另外一个目录(Java实现)

转载 2013年12月04日 13:03:39
首先说说我的思路, 要复制一个目录下的所有文件到另外的一个目录下,我们不知道目录下的结构是怎么样的,也不知道目录有多少层,文件有多少个,这样我们会想用循环,for! 但是我们不知道有多少层,所以循环不能够满足我们的需求! 学过递归的人,都知道这个用递归的思想可以很好解决这个问题的。

       递归这里我就不说是什么东西了,这个自己可以百度,谷歌!

      

     现在说说我的实现, 因为目录下有可能存在目录或者文件,他们混在一起,所以我们很难进行操作和判断,如果直接操作的话,我们要先建立目录,才能定位文件。这个操作起来比较复制。 所以我想到的是,先复制目录的结构,再复制文件这个思路!下面是我的代码实现, 

       1.先写一个文件复制的操作方法

       2.复制目录结构的复制方法

      3. 递归源目标文件的方法

      4. 整合

  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8.   
  9.   
  10. public class CopyDirectory {  
  11.     public static void main(String[] args) {  
  12.         //复制D盘下的bbs目录到  D盘下的bb2/mms1下  
  13.         CopyDirectory.copyFileOrDir("D://bbs""D://bbs2//mms1");  
  14.     }  
  15.       
  16.      /** 
  17.      * @Description: 整合两个操作,一个是文件夹的所有目录,然后复制目录下的所有文件到相应的目录 
  18.      * @param srcPath   需要复制的目录 
  19.      * @param targetPath  复制到哪里 
  20.      * @author L.Eric 
  21.      * create: 2013-4-16 
  22.      */  
  23.     public static void copyFileOrDir(String srcPath, String targetPath){  
  24.         parseDir(srcPath,targetPath);  
  25.         copyAllFile(srcPath, targetPath);  
  26.     }  
  27.       
  28.     public static void copyAllFile(String srcPath, String targetPath){  
  29.         File f = new File(srcPath);  
  30.         File[] fileList = f.listFiles();  
  31.         for(File f1 : fileList){  
  32.             if(f1.isFile()) {  
  33.                 CopyDirectory.copyFile(srcPath + "//" + f1.getName(), targetPath + "//" + f1.getName());  
  34.             }  
  35.             //判断是否是目录  
  36.             if(f1.isDirectory()) {  
  37.                 copyAllFile(f1.getPath().toString(), targetPath + "//" + f1.getName());  
  38.             }  
  39.         }  
  40.     }  
  41.       
  42.      /** 
  43.          * @Description: 通过字节流复制一个文件 
  44.          * @param src      源文件的路径 
  45.          * @param target   目标文件的路径 
  46.          * @author L.Eric 
  47.          * create: 2013-4-16 
  48.     */  
  49.     public static void copyFile(String src, String target){  
  50.             InputStream is = null;  
  51.             OutputStream os = null;  
  52.               
  53.             try {  
  54.                 is = new FileInputStream(src);  
  55.                 os = new FileOutputStream(target);  
  56.                 byte[] buff = new byte[1024];  
  57.                 int len = 0;  
  58.                 while((len = is.read(buff, 0, buff.length)) != -1) {  
  59.                     os.write(buff, 0, len);  
  60.                 }  
  61.                 System.out.println("文件拷贝成功!");  
  62.             } catch (FileNotFoundException e) {  
  63.                 // TODO Auto-generated catch block  
  64.                 e.printStackTrace();  
  65.             } catch (IOException e) {  
  66.                 // TODO Auto-generated catch block  
  67.                 e.printStackTrace();  
  68.             } finally {  
  69.                 if(os!=null){  
  70.                     try {  
  71.                         os.close();  
  72.                     } catch (IOException e) {  
  73.                         // TODO Auto-generated catch block  
  74.                         e.printStackTrace();  
  75.                     } finally {  
  76.                         if(is!=null){  
  77.                             try {  
  78.                                 is.close();  
  79.                             } catch (IOException e) {  
  80.                                 // TODO Auto-generated catch block  
  81.                                 e.printStackTrace();  
  82.                             }  
  83.                         }  
  84.                     }  
  85.                 }  
  86.             }  
  87.               
  88.         }  
  89.       
  90.      /** 
  91.      * @Description: 复制一个目录下的所有目录文件(只复制目录结构) 
  92.      * @param pathName   需要复制的目标目录 
  93.      * @param target     生成的目标文件目录 
  94.      * @author L.Eric 
  95.      * create: 2013-4-16 
  96.      */  
  97.     public static void parseDir(String pathName, String target){  
  98.         //创建一个新的目录  
  99.         File targetFile = new File(target);  
  100.         if(!targetFile.exists()) {  
  101.             targetFile.mkdirs();  
  102.         }  
  103.           
  104.         //创建一个抽象路径  
  105.         File file = new File(pathName);  
  106.         if(file.isDirectory()){  
  107.             File[] files = file.listFiles();  
  108.             for(File f : files){  
  109.                 if(f.isDirectory()) {  
  110.                     parseDir(f.getPath(), target + "//" + f.getName());  
  111.                 }  
  112.             }  
  113.         }  
  114.     }  
  115.       

java复制文件到指定目录

数据采集过程中,将数据分别采集到了两个电脑中,需要将两个文件放入一个文件夹中,因此,需要写一个复制目标文件到指定文件夹的代码,于是开始了撸代码过程。 开始时候,想偷懒,copy个程序改改就这样吧,于是...
  • he_min
  • he_min
  • 2016年11月07日 10:38
  • 5708

Java实现文件或文件夹的复制到指定目录

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class ...
  • qq_22672291
  • qq_22672291
  • 2017年03月29日 14:01
  • 3972

怎样用Java复制一个文件到指定目录?

import java.io.*;public class CopyFile {public static void main(String[] args) {try{FileInputStream ...
  • sz_bdqn
  • sz_bdqn
  • 2008年08月27日 01:46
  • 23920

java-将任意文件夹下的某一类型的文件复制到指定的文件夹

java实现将任意文件夹下的某一类型的文件复制到指定的文件夹
  • qq_35331580
  • qq_35331580
  • 2017年08月30日 14:25
  • 351

Java学习之复制文件目录到指定文件夹

/** * 复制文件目录结构 * * @param oldPath * @param newPath */ public static void copy(String pat...
  • u012527802
  • u012527802
  • 2016年04月12日 14:28
  • 718

java实现拷贝文件到另一个路径

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java...
  • u012102536
  • u012102536
  • 2017年04月27日 16:46
  • 893

Java将C盘一个文本文件复制到D盘

Java将C盘一个文本文件复制到D盘。
  • hoho_12
  • hoho_12
  • 2016年05月05日 22:55
  • 3525

java如何拷贝文件到另一个目录下

/** * 复制单个文件 * @param oldPath String 原文件路径 如:c:/fqf.txt * @param newPath String 复制...
  • menghuannvxia
  • menghuannvxia
  • 2015年03月04日 15:26
  • 2139

java 复制文件下的文件到指定文件夹

java 复制文件夹
  • u011300597
  • u011300597
  • 2017年06月14日 16:21
  • 244

java遍历文件夹并复制文件到指定目录

转载:http://www.open-open.com/home/space-2869-do-blog-id-5781.html   package com.czp; import java...
  • robinliu2010
  • robinliu2010
  • 2012年05月21日 21:51
  • 3202
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:复制一个目录下的所有文件到另外一个目录(Java实现)
举报原因:
原因补充:

(最多只允许输入30个字)