Java中实现复制文件或文件夹——CopyUtil.java

转载 2012年03月21日 12:20:49

参考自:http://blog.csdn.net/Dream_JavaWorld/article/details/3682075

拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。

但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法。

[java] view plaincopy
  1. package org.bruce.convert.util;  
  2.   
  3. import java.io.*;  
  4.   
  5. /** 
  6.  * 复制文件夹或文件夹 
  7.  */  
  8. public class CopyUtil {  
  9.     public static boolean _choice = true;  
  10.       
  11.     // 复制文件  
  12.     public static void CopyFile(File sourceFile, File targetFile)  
  13.             throws IOException {  
  14.         // 新建文件输入流并对它进行缓冲  
  15.         FileInputStream input = new FileInputStream(sourceFile);  
  16.         BufferedInputStream inBuff = new BufferedInputStream(input);  
  17.   
  18.         // 新建文件输出流并对它进行缓冲  
  19.         FileOutputStream output = new FileOutputStream(targetFile);  
  20.         BufferedOutputStream outBuff = new BufferedOutputStream(output);  
  21.   
  22.         // 缓冲数组  
  23.         byte[] b = new byte[1024 * 5];  
  24.         int len;  
  25.         while ((len = inBuff.read(b)) != -1) {  
  26.             outBuff.write(b, 0, len);  
  27.         }  
  28.         // 刷新此缓冲的输出流  
  29.         outBuff.flush();  
  30.   
  31.         // 关闭流  
  32.         inBuff.close();  
  33.         outBuff.close();  
  34.         output.close();  
  35.         input.close();  
  36.     }  
  37.   
  38.     // 复制文件夹  
  39.     public static void CopyDirectory(String sourceDir, String targetDir)  
  40.             throws IOException {  
  41.         // 新建目标目录  
  42.         (new File(targetDir)).mkdirs();  
  43.         // 获取源文件夹当前下的文件或目录  
  44.         File[] file = (new File(sourceDir)).listFiles();  
  45.         for (int i = 0; i < file.length; i++) {  
  46.             if (file[i].isFile()) {  
  47.                 // 源文件  
  48.                 File sourceFile = file[i];  
  49.                 // 目标文件  
  50.                 File targetFile = new File(  
  51.                         new File(targetDir).getAbsolutePath() + File.separator  
  52.                                 + file[i].getName());  
  53.                 CopyFile(sourceFile, targetFile);  
  54.             }  
  55.             if (file[i].isDirectory()) {  
  56.                 // 准备复制的源文件夹  
  57.                 String dir1 = sourceDir + File.separator + file[i].getName();  
  58.                 // 准备复制的目标文件夹  
  59.                 String dir2 = targetDir + File.separator + file[i].getName();  
  60.                 CopyDirectory(dir1, dir2);  
  61.             }  
  62.         }  
  63.     }  
  64.       
  65.     /** 
  66.      * 稍作包装, 
  67.      * 如果 url1 是文件的话,直接copyFile 
  68.      * 如果 url1 是文件夹的话,再 copyDirectory 
  69.      * @throws IOException  
  70.      */  
  71.      public static boolean PowerCopy(String source, String dest) {  
  72.          try {  
  73.             File input = new File(source);  
  74.              if(input.isFile() && !_choice) {  
  75.                  // 如果输入是一个文件~  
  76.                  (new File(dest)).mkdirs();  
  77.                  File output = new File(dest+File.separator+input.getName());  
  78.                  CopyFile(input, output);  
  79.              } else if(input.isFile() && _choice) {  
  80.                  CopyFile(new File(source), new File(dest));  
  81.              } else {  
  82.                  // 如果输入是一个文件夹~  
  83.                  CopyDirectory(source, dest);  
  84.              }  
  85.              return true;  
  86.         } catch (IOException e) {  
  87.             // TODO Auto-generated catch block  
  88.             e.printStackTrace();  
  89.             BY.Err("exception occured in CopyUtil.powerCopy!");  
  90.             return false;  
  91.         }  
  92.      }  
  93.       
  94.     /** 
  95.      * usage!! 
  96.      */  
  97.     public static void main(String args[]) throws IOException {  
  98.         // 单文件~  
  99.         String url1 = "/Users/user/Desktop/480*320.png";  
  100.         String url2 = "/Users/user/Desktop/481*320.png";  
  101.           
  102.         // 源文件夹 -> 目标文件夹  
  103. //      String url1 = "/Users/user/Desktop/Resources";  
  104. //      String url2 = "/Users/user/Desktop/Resources2";  
  105.         PowerCopy(url1, url2);  
  106.     }  
  107. }  



Java中实现复制文件或文件夹

Java中实现复制文件或文件夹     拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,...
  • Dream_JavaWorld
  • Dream_JavaWorld
  • 2009年01月02日 10:50
  • 29737

java复制文件或文件夹

package com.xuanwu.mtoserver.util; import java.io.*; /** * @author Toby 复制文件夹或文件夹 */ publ...
  • QQzyb
  • QQzyb
  • 2013年08月22日 17:53
  • 779

java NIO实现的文件复制(包括文件与文件夹复制) NIO读取数据与写数据

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja...
  • j04110414
  • j04110414
  • 2014年01月03日 17:37
  • 3065

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

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

java nio 复制文件功能

  package com.ghb.crp.file;     import java.io.BufferedInputStream;   import java.io.BufferedOutputS...
  • ghb5371548
  • ghb5371548
  • 2010年05月18日 12:03
  • 1637

Java字节流实现文件夹的拷贝

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java...
  • baidu_35738377
  • baidu_35738377
  • 2016年12月15日 09:08
  • 632

使用java递归实现文件及文件夹的复制

完成老师布置的作业,写了这么小小的一个例子,其实在这个例子中比较重要的也就是递归的使用,在做这个实验时,开始犯了错就是在递归上,在实现循环+递归时一定要记住方法中使用的变量的属性,是局部变量还是成员变...
  • seebetpro
  • seebetpro
  • 2015年12月20日 22:18
  • 1136

android-Java中实现复制文件或文件夹 - 随心

import java.io.*;   /**   * 复制文件夹或文件夹   */   public class CopyDirectory {       // 源文件夹       ...
  • Super_Level
  • Super_Level
  • 2012年07月24日 10:13
  • 11330

MATLAB 小经验积累(2):MATLAB复制、移动文件和文件夹

主要用到两个函数copyfile和movefile 这个和Linux很相似:
  • laohu_tiger
  • laohu_tiger
  • 2014年07月05日 15:58
  • 7045

复制文件或文件夹Java方法

/** * 复制整个文件夹内容 * * @param oldPath * String 原文件路径 如:c:/fqf * @param newPath ...
  • wangshuai6707
  • wangshuai6707
  • 2015年12月28日 08:55
  • 264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中实现复制文件或文件夹——CopyUtil.java
举报原因:
原因补充:

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