zoukankan      html  css  js  c++  java
  • 文件夹的拷贝

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

     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 src
    33      * @param dest
    34      */
    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 }
  • 相关阅读:
    安卓小助手
    位图切割器&位图裁剪器
    OAuth2.0 的简介
    多账户的统一登录方案
    常用的一些SQL语句
    SQL语句的优化
    SpringCloud简介与5大常用组件
    数据库为什么需要锁机制?有哪些锁机制?
    高并发下如何优化能避免服务器压力过大?
    Spring MVC 简介
  • 原文地址:https://www.cnblogs.com/JamKong/p/4447067.html
Copyright © 2011-2022 走看看