编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad

程序文件输入输出浏览:294收藏:0
答案:
(大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)
答:listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;

public class AnswerB02 {

    public static void main(String[] args) throws IOException {
        File sourceFolder = new File("D:/java");
        File[] files = sourceFolder.listFiles(new JavaFileFilter());
        for (File file : files) {
            String absolutePath = file.getName();
            String targetFile = "D:/jad/" + absolutePath.substring(0, absolutePath.length() - 5) + ".jad";
            copy(file, new File(targetFile));
        }
    }

    private static void copy(File source, File target) throws IOException {
        FileInputStream input = new FileInputStream(source);
        FileOutputStream out = new FileOutputStream(target);
        int length = -1;
        byte[] bs = new byte[1024];
        while ((length = input.read(bs)) != -1) {
            out.write(bs, 0, length);
        }
        input.close();
        out.close();
    }
    
    private static final class JavaFileFilter implements FilenameFilter {
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".java");
        }
    }
}