IO流的练习3 复制多级文件夹下的指定文件并改名

Posted 卡拉瓦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流的练习3 复制多级文件夹下的指定文件并改名相关的知识,希望对你有一定的参考价值。

需求:复制指定目录下的指定文件,并修改后缀名。
    指定的文件是:.java文件。
    指定的后缀名是:.jad
   数据源所在文件夹:C:\Users\Administrator\Desktop\记录
   目的地所在文件夹:C:\Users\Administrator\Desktop\新建文件夹\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     }

 

以上是关于IO流的练习3 复制多级文件夹下的指定文件并改名的主要内容,如果未能解决你的问题,请参考以下文章

IO流的练习2 ——— 复制单级文件夹中的文件

IO流的一些练习

java基础IO流 复制键盘录入的目录,复制其中的.java文件到指定目录,指定目录中有重名,则改名 对加密文件计算字母个数

用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

复制指定目录下的指定文件,并修改后缀名 很重要,也很难!!!

Java File IO 练习题:把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件