zoukankan      html  css  js  c++  java
  • Java I/O文件拷贝

    用I/O 和递归 拷贝复制文件

     1 public class wenjianfuzhi
     2 {
     3     static File file = new File("F:\java\workspace\Yichang\src\");
     4     public static void main(String[] args) throws Exception
     5     {
     6         File[] files = file.listFiles();//l列出所有的子文件和路径
     7         for(File f : files)//遍历当前文件夹里面的所有文件
     8         {    
     9             copy(f);
    10         }                    
    11     }
    12     public static void copy(File file) throws Exception
    13     {
    14         if(file.isFile())//判断对象是否为文件--不是目录
    15         {
    16 
    17             /**
    18              * 1、一定要是文件的时候才处理
    19              * 2、当他是文件的时候获取到当前文件的目录:F:\java\workspace\Yichang\src\com\cyghyy
    20              * 3、判断当前文件所在的文件夹和给定文件夹之间差了什么:F:\java\workspace\Yichang\src\com 》cyghyy
    21              * 4、在d盘下面创建d://差的文件夹 -- 当前文件要拷贝的目录
    22              * 5、构建当前要拷贝的文件的路-第四部的到目录+文件的名字
    23              * 6、用IO来读和写完成拷贝的工作
    24              */
    25             String path = file.getParent();//当他是文件的时候获取到当前文件的目录:F:\java\workspace\Yichang\src\com\cyghyy
    26             String name = path.replace(wenjianfuzhi.file.getAbsolutePath(), "");//判断当前文件所在的文件夹和给定文件夹之间差了什么:F:\java\workspace\Yichang\src\com 》cyghyy
    27             File target = new File ("E:\",name);//在D盘下面创建D://差的文件夹--当前文件要拷贝的目录
    28             if(!target.exists())//判断对象所对应的文件或文件及是否存在,
    29             {
    30                 target.mkdirs();//如果不存在那么创建
    31             }
    32             
    33             target = new File(target,file.getName());//构建当前要拷贝的文件的路径--第4步的目录+文件的名字
    34             FileInputStream in = new FileInputStream(file);//用IO来读写完成拷贝
    35             FileOutputStream out = new FileOutputStream(target);
    36             byte[] b = new byte[200];//每次读取200个字节
    37             int length = in.read(b);//读取到的字节
    38             while (length !=-1)
    39             {
    40                 out.write(b, 0, length);//输出读取到的200字节,读到 多少就输出多少
    41                 length = in.read(b);//从201开始去读取200 个字节 如此循环
    42             }
    43             out.flush();//清除缓存
    44             out.close();//关闭流
    45             in.close();//关闭流
    46         }else//如果不是文件那么执行下面代码
    47         {
    48             File[] files =file.listFiles();//列出所有子文件和路径
    49             for(File file2 : files)//遍历文件和路径
    50             {
    51                 copy(file2);//
    52             }
    53         }
    54     }        
    55 }
  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/cyg-06/p/5974579.html
Copyright © 2011-2022 走看看