zoukankan      html  css  js  c++  java
  • IO流的练习3 —— 复制多级文件夹下的指定文件并改名

    需求:复制指定目录下的指定文件,并修改后缀名。
        指定的文件是:.java文件。
        指定的后缀名是:.jad
       数据源所在文件夹:C:UsersAdministratorDesktop记录
       目的地所在文件夹:C:UsersAdministratorDesktop新建文件夹copy

    分析
      A:封装数据源的目录    B:封装目的地的目录
          判断路径下的文件是否是文件夹
            是:在目的文件夹下创建该文件,
              获取数据源所在文件夹的所有文件的File数组
              遍历File数组,得到每个文件的File对象

            不是:再对其后缀进行判断是否是.java

                是:进行改名并复制

                不是:无视


    代码:

    1、首先写main方法:

     1     public static void main(String[] args) throws IOException {
     2         //封装目录
     3         File start = new File("C:\Users\Administrator\Desktop\记录");
     4         File end = new File("C:\Users\Administrator\Desktop\新建文件夹\copy");
     5         
     6         //如果目的地文件夹不存在,则创建
     7         if(!end.exists()){
     8             end.mkdir();
     9         }
    10         
    11         //复制文件夹
    12         copyFolder(start,end);        
    13     }

    2、判断是否是文件夹,并对文件夹进行复制的方法

     1     private static void copyFolder(File start, File end) throws IOException {
     2         // 由于start是文件夹,所以开始不必获取File数组,直接进行判断
     3         if(start.isDirectory()){
     4             //是文件夹
     5             
     6             //首先在目的文件夹下创建不同路径,同样名称的文件夹
     7             File newFolder = new File(end,start.getName());
     8             newFolder.mkdir();
     9             
    10             //获取该文件夹下的所有文件或文件夹的File数组
    11             File[] f = start.listFiles();
    12             for(File file : f){
    13                 //再重新执行判断是否是文件夹
    14                 copyFolder(file,newFolder);
    15             }
    16             
    17         }else{
    18             //是文件
    19             //判断是否是.java后缀的,是的话就改名,不是则丢掉
    20             String name = start.getName();
    21             if(name.endsWith(".java")){
    22                 String newname = name.replace(".java", ".jad");
    23                 File newfile = new File(end,newname);
    24                 
    25                 //进行复制
    26                 copyfile(start,newfile);
    27             }

    3、判断文件后缀是否是.java,并对它的数据进行复制

     1     private static void copyfile(File start, File newfile) throws IOException {
     2         //因为任意格式的,所以用缓冲字节流
     3         BufferedInputStream bi = new BufferedInputStream(new FileInputStream(start));
     4         BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(newfile));
     5         
     6         //获取数据
     7         byte[] by = new byte[1024];
     8         int len = 0;
     9         while((len = bi.read(by)) != -1){
    10             bo.write(by,0,len);
    11         }
    12         bi.close();
    13         bo.close();    
    14     }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    regex
    ubuntu 14.04 更新 gcc/g++ 4.9.2
    然而我又更新博客了。
    我一万年也不更新一次博客
    区块链
    mongodb查看数据库和表的信息
    js高级总结
    es6 新特性
    Flex 布局教程:实例篇
    常用 Git 命令清单
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5927267.html
Copyright © 2011-2022 走看看