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();
}
} |
|