Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例

1. 复制指定目录下指定后缀名的文件并修改名称的案例

    需求:复制指定目录下的指定文件,并修改后缀名。

  • 指定的文件是:.java文件。

    • 指定的后缀名是:.jad

    • 指定的目录是:jad

数据源:e:\\java\\A.java

目的地:e:\\jad\\A.jad

 

   分析:
      A封装目录
      B获取该目录下的java文件的File数组
      C遍历该File数组,得到每一个File对象
      D把该File进行复制
      E在目的地目录下改名

 

 

2. 代码示例:

 1 package cn.itcast_04;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 import java.io.FilenameFilter;
 9 import java.io.IOException;
10 
11 /*
12  * 需求:复制指定目录下的指定文件,并修改后缀名。
13  * 指定的文件是:.java文件。
14  * 指定的后缀名是:.jad
15  * 指定的目录是:jad
16  * 
17  * 数据源:e:\\java\\A.java
18  * 目的地:e:\\jad\\A.jad
19  * 
20  * 分析:
21  *         A:封装目录
22  *         B:获取该目录下的java文件的File数组
23  *         C:遍历该File数组,得到每一个File对象
24  *         D:把该File进行复制
25  *         E:在目的地目录下改名
26  */
27 public class CopyFolderDemo {
28     public static void main(String[] args) throws IOException {
29         // 封装目录
30         File srcFolder = new File("e:\\java");
31         // 封装目的地
32         File destFolder = new File("e:\\jad");
33         // 如果目的地目录不存在,就创建
34         if (!destFolder.exists()) {
35             destFolder.mkdir();
36         }
37 
38         // 获取该目录下的java文件的File数组
39         File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
40             @Override
41             public boolean accept(File dir, String name) {
42                 return new File(dir, name).isFile() && name.endsWith(".java");
43             }
44         });
45 
46         // 遍历该File数组,得到每一个File对象
47         for (File file : fileArray) {
48             // System.out.println(file);
49             // 数据源:e:\\java\\DataTypeDemo.java
50             // 目的地:e:\\jad\\DataTypeDemo.java
51             String name = file.getName();
52             File newFile = new File(destFolder, name);
53             copyFile(file, newFile);
54         }
55 
56         // 在目的地目录下改名
57         File[] destFileArray = destFolder.listFiles();
58         for (File destFile : destFileArray) {
59             // System.out.println(destFile);
60             // e:\jad\DataTypeDemo.java
61             // e:\\jad\\DataTypeDemo.jad
62             String name =destFile.getName(); //DataTypeDemo.java
63             String newName = name.replace(".java", ".jad");//DataTypeDemo.jad
64             
65             File newFile = new File(destFolder,newName);
66             destFile.renameTo(newFile);
67         }
68     }
69 
70     private static void copyFile(File file, File newFile) throws IOException {
71         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
72                 file));
73         BufferedOutputStream bos = new BufferedOutputStream(
74                 new FileOutputStream(newFile));
75 
76         byte[] bys = new byte[1024];
77         int len = 0;
78         while ((len = bis.read(bys)) != -1) {
79             bos.write(bys, 0, len);
80         }
81 
82         bos.close();
83         bis.close();
84     }
85 }

运行效果,如下:

 

posted on 2015-10-11 22:33  鸿钧老祖  阅读(398)  评论(0编辑  收藏  举报

导航