问大家一个文件复制的问题

编写一个Java程序,将d:\java目录及其子目录下的所有.java文件按原来目录结构复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 求这题怎么破?求帮助。谢谢啦!

可以把问题分三步,复制目录, 过滤文件,改名

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

这里能找到你需要的全部函数

层级遍历目录下的所有文件,使用inputstream读取文件内容,并用outputstream输出到指定目录的文件内来实现复制,输出时,设置文件后缀为.jad即可。

简单写了一个示例代码:

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Test {
    public static void doCopyFile(String sourcefolder,String targetFolder){
        try {
            (new File(targetFolder)).mkdirs(); //如果文件夹不存在 则建立新文件夹
            File a=new File(sourcefolder);
            String[] file=a.list();
            File temp=null;
            for (int i = 0; i < file.length; i++) {
                String targetName = file[i];
                //写入文件重命名
                if(targetName.endsWith(".java")){
                    targetName = targetName.substring(0,targetName.length()-5)+".jad";
                }
                if(sourcefolder.endsWith(File.separator)){
                    temp=new File(sourcefolder+file[i]);
                }
                else{
                    temp=new File(sourcefolder+File.separator+file[i]);
                }

                if(temp.isFile()){
                    FileInputStream input = new FileInputStream(temp);

                    FileOutputStream output = new FileOutputStream(targetFolder + "/" + targetName);
                    byte[] b = new byte[1024 * 5];
                    int len;
                    while ( (len = input.read(b)) != -1) {
                        output.write(b, 0, len);
                    }
                    output.flush();
                    output.close();
                    input.close();
                }
                if(temp.isDirectory()){//如果是子文件夹
                    doCopyFile(sourcefolder+"/"+file[i],targetFolder+"/"+file[i]);
                }
            }
        }
        catch (Exception e) {
            System.out.println("复制整个文件夹内容操作出错");
            e.printStackTrace();

        }
    }
    public static void main(String[] args){
        String sourcefolder = "d:\\java";
        String targetFolder = "d:\\jad";
        Test.doCopyFile(sourcefolder,targetFolder);

    }

}