博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件夹的拷贝
阅读量:6368 次
发布时间:2019-06-23

本文共 3178 字,大约阅读时间需要 10 分钟。

需要引用笔记《文件拷贝的实现》的方法

1   public static void copyDirectory(File src,File dest){ 2         if(src.isDirectory()){ 3             dest=new File(dest,src.getName());//在dest文件夹下创建src文件夹 4         } 5         copyDir(src, dest); 6     } 7     public static void copyDir(File src,File dest){ 8          9         if(src.isDirectory()){10             dest.mkdirs();11             for(File sub:src.listFiles()){12                 copyDirectory(sub, new File(dest,sub.getName()));13             }14         }else if(src.isFile()){15             copyFile(src, dest);16         }17     }
  A (源文件夹)                            B(目标文件夹)
     /    \
    b      c
     |
    d.txt
假设此时,要复制A文件夹到B文件夹
1.那么copyDir()方法是用来干嘛的呢?
   答:是为了复制A(文件夹),仅仅是用来复制A而已,不包括A文件夹里面的b/c/d.txt等文件。
          如果,没有调用copyDir(),那么B文件夹下的内容将会是:
                                     B
                                   /    \
                                  b     c
                                   |
                                  d.txt
          调用copyDir()的结果是:
                     
                                     B
                                      |
                                     A
                                   /    \
                                  b     c
                                   |
                                  d.txt
完整代码:
1 package com.IO; 2 import java.io.*; 3 public class CopyUtil { 4     /** 5      * 拷贝文件夹 6      * @param src 7      * @param dest 8      */ 9     public static void copyDirectory(String srcPath,String destPath){
//重载copyDirectory()方法10 File src=new File(srcPath);11 File dest=new File(destPath);12 copyDirectory(src, dest);13 }14 public static void copyDirectory(File src,File dest){15 if(src.isDirectory()){16 dest=new File(dest,src.getName());//在dest目录下创建一个src同名的文件17 }18 copyDir(src, dest);19 }20 public static void copyDir(File src,File dest){21 if(src.isDirectory()){22 dest.mkdirs();23 for(File file:src.listFiles()){24 copyDir(file, new File(dest,file.getName()));//重点!!25 }26 }else if(src.isFile()){27 copyFile(src, dest);28 }29 }30 /**31 * 拷贝文件32 * @param src33 * @param dest34 */35 public static void copyFile(String srcPath,String destPath){36 File src=new File(srcPath);37 File dest=new File(destPath);38 copyFile(src, dest);39 }40 public static void copyFile(File src,File dest){41 BufferedInputStream bis=null;42 BufferedOutputStream bos = null;43 try {44 bis = new BufferedInputStream(new FileInputStream(src));45 bos = new BufferedOutputStream(new FileOutputStream(dest));46 byte[] flush=new byte[1024];47 int len=0;//实际获取的数据长度48 while(-1!=(len=bis.read(flush))){49 bos.write(flush);//写入数据50 }51 bos.flush();52 } catch (FileNotFoundException e) {53 System.out.println("文件找不到");54 e.printStackTrace();55 } catch (IOException e) {56 System.out.println("读取流失败");57 e.printStackTrace();58 }finally{59 60 try {61 if(null!=bos){62 bos.close();63 }64 if(null!=bis){65 bis.close();66 }67 } catch (IOException e) {68 System.out.println("关闭流失败!");69 e.printStackTrace();70 }71 72 }73 }74 }

 

转载于:https://www.cnblogs.com/JamKong/p/4447067.html

你可能感兴趣的文章
关于VMware Workstation主机列表问题求教
查看>>
配置管理小报101021:给ubuntu加监控
查看>>
qml文字滚动效果的封装,实现方式运用的qml中提供的动画效果,另一种实现方式也可以使用定时器修改控件的坐标来实现...
查看>>
标准C++实现任务队列
查看>>
jdbc url
查看>>
刷leetcode第704题-二分查找
查看>>
debug_backtrace() 函数生成一个 backtrace(追踪)
查看>>
第七天,还是盒子
查看>>
XAMPP软件包下载
查看>>
XXL-JOB初体验-ORACLE版
查看>>
沉思录:别人的棺材
查看>>
jersey + spring + mybatis + redis项目搭建
查看>>
PAT 1006 部分正确_另一种解法
查看>>
在Keil环境下使用JLink实现printf输出重定向至debug窗口
查看>>
JFreeChart生成3D饼图
查看>>
postgres的\d命令不显示全部的用户表
查看>>
poj 3468 A Simple Problem with Integers
查看>>
OOA/OOD/OOP细讲
查看>>
Tomcat 系统架构与设计模式_ 设计模式分析
查看>>
本地串口TCP/IP 映射到远端串口
查看>>