`
xumingrencai
  • 浏览: 1179608 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

  1. packageorg.bruce.convert.util;
  2. importjava.io.*;
  3. /**
  4. *复制文件夹或文件夹
  5. */
  6. publicclassCopyUtil{
  7. publicstaticboolean_choice=true;
  8. //复制文件
  9. publicstaticvoidCopyFile(FilesourceFile,FiletargetFile)
  10. throwsIOException{
  11. //新建文件输入流并对它进行缓冲
  12. FileInputStreaminput=newFileInputStream(sourceFile);
  13. BufferedInputStreaminBuff=newBufferedInputStream(input);
  14. //新建文件输出流并对它进行缓冲
  15. FileOutputStreamoutput=newFileOutputStream(targetFile);
  16. BufferedOutputStreamoutBuff=newBufferedOutputStream(output);
  17. //缓冲数组
  18. byte[]b=newbyte[1024*5];
  19. intlen;
  20. while((len=inBuff.read(b))!=-1){
  21. outBuff.write(b,0,len);
  22. }
  23. //刷新此缓冲的输出流
  24. outBuff.flush();
  25. //关闭流
  26. inBuff.close();
  27. outBuff.close();
  28. output.close();
  29. input.close();
  30. }
  31. //复制文件夹
  32. publicstaticvoidCopyDirectory(StringsourceDir,StringtargetDir)
  33. throwsIOException{
  34. //新建目标目录
  35. (newFile(targetDir)).mkdirs();
  36. //获取源文件夹当前下的文件或目录
  37. File[]file=(newFile(sourceDir)).listFiles();
  38. for(inti=0;i<file.length;i++){
  39. if(file[i].isFile()){
  40. //源文件
  41. FilesourceFile=file[i];
  42. //目标文件
  43. FiletargetFile=newFile(
  44. newFile(targetDir).getAbsolutePath()+File.separator
  45. +file[i].getName());
  46. CopyFile(sourceFile,targetFile);
  47. }
  48. if(file[i].isDirectory()){
  49. //准备复制的源文件夹
  50. Stringdir1=sourceDir+File.separator+file[i].getName();
  51. //准备复制的目标文件夹
  52. Stringdir2=targetDir+File.separator+file[i].getName();
  53. CopyDirectory(dir1,dir2);
  54. }
  55. }
  56. }
  57. /**
  58. *稍作包装,
  59. *如果url1是文件的话,直接copyFile
  60. *如果url1是文件夹的话,再copyDirectory
  61. *@throwsIOException
  62. */
  63. publicstaticbooleanPowerCopy(Stringsource,Stringdest){
  64. try{
  65. Fileinput=newFile(source);
  66. if(input.isFile()&&!_choice){
  67. //如果输入是一个文件~
  68. (newFile(dest)).mkdirs();
  69. Fileoutput=newFile(dest+File.separator+input.getName());
  70. CopyFile(input,output);
  71. }elseif(input.isFile()&&_choice){
  72. CopyFile(newFile(source),newFile(dest));
  73. }else{
  74. //如果输入是一个文件夹~
  75. CopyDirectory(source,dest);
  76. }
  77. returntrue;
  78. }catch(IOExceptione){
  79. //TODOAuto-generatedcatchblock
  80. e.printStackTrace();
  81. BY.Err("exceptionoccuredinCopyUtil.powerCopy!");
  82. returnfalse;
  83. }
  84. }
  85. /**
  86. *usage!!
  87. */
  88. publicstaticvoidmain(Stringargs[])throwsIOException{
  89. //单文件~
  90. Stringurl1="/Users/user/Desktop/480*320.png";
  91. Stringurl2="/Users/user/Desktop/481*320.png";
  92. //源文件夹->目标文件夹
  93. //Stringurl1="/Users/user/Desktop/Resources";
  94. //Stringurl2="/Users/user/Desktop/Resources2";
  95. PowerCopy(url1,url2);
  96. }
  97. }



分享到:
评论

相关推荐

    copyutil.jar

    同目录下放doc.xml做配置文件,子节点有IN_FILE_PATH,OUT_FILE_PATH

    CopyObjectUtils.java

    Orika工具类包含常用转化

    文件复制工具程序Java版

    可以把一个文件(如:txt)复制到指定目录,并重新命名,程序简单易读,方便上手使用。

    Java copy对象的工具类

    Java CopyUtil工具类,可以进行对象的深copy,比如:对象里面包含对象,对象里面包含Map,List,Set...等复杂类型的属性都可以copy,copy后的对象与原有对象没有联系,即改变原有对象内容,不会改变copy后的对象里面的...

    base.util:基于JDK的通用工具

    base.util 基于JDK得基础工具类 用于基于JDK得基础工具 任何人如果想加入可以联系QQ:893351947 ...对象复制工具:CopyUtil 反射: 1.基本类型强转工具:ClassParserUtil 时间: 1.时间工具:TimeUtil

Global site tag (gtag.js) - Google Analytics