黑马程序员技术交流社区

标题: 接口FilenameFilter怎么能够创建对象?逆天了 [打印本页]

作者: 王盟    时间: 2015-9-3 22:09
标题: 接口FilenameFilter怎么能够创建对象?逆天了
java.io包下的接口public interface FilenameFilter,我有一些问题,这不是一个接口吗?怎么还能创建对象,请看下面的代码(主方法中第二行代码):这是,将E:\java目录下的所有.java文件复制到F:\jad目录下,并将原来文件的扩展名从.java改为.jad的代码

public static void main(String[] args) throws IOException {
                File srcfile = new File("E:\\java");
                File[] fileArr = srcfile.listFiles(new FilenameFilter() {
                        //这里的dir就是数据源地址(srcfile),name是遍历数据源目录(srcfile)获得的所有文件的名字。
                        public boolean accept(File dir, String name) {
                                //然后判断,是文件同时后缀名为.java的,被数组fileArr接受。
                                return new File(dir, name).isFile() && name.endsWith(".java");
                        }
                });
                //判断目标目录是否存在,不存在就创建
                File destFile = new File("F:\\jad");
                if (!destFile.exists()) {
                        System.out.println(destFile.mkdir());
                }
                //遍历循环,先给遍历的文件替换名字,然后高效字符输入输出流每次读写一行的方式,复制每一个文件。
                for (File f : fileArr) {
                        String oldname = f.getName();
                        String newname = oldname.replace(".java", ".jad");
                        File newFile = new File(destFile, newname);
                       
                        //高效输入输出流都是需要在普通输入输出流的基础上的,字符流和字节流都是这样的。
                        BufferedReader br = new BufferedReader(new FileReader(f));
                        BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
                        String line = null;
                        while ((line = br.readLine()) != null) {
                                bw.write(line);
                                bw.newLine();
                                bw.flush();
                        }
                        bw.close();
                        br.close();
                }

        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2