黑马程序员技术交流社区

标题: 求助,功能是复制指定路径下所有文件到另一个文件夹! [打印本页]

作者: 将臣    时间: 2013-4-12 20:59
标题: 求助,功能是复制指定路径下所有文件到另一个文件夹!
本帖最后由 将臣 于 2013-4-13 08:25 编辑

功能是复制指定路径下所有文件到另一个文件夹!这是方法,问题就是 每一次 复制的都是 第一个文件 只遍历了一个文件 而不是所有的文件!
public static void copyAndRenameFiles(File[] sourceFiles,String targetFilePath,String originalSuffix,String targetSuffix){          File targetFile = new File(targetFilePath);  
        FileWriter fw = null;  
        FileReader fr = null;  
        if(!targetFile.isDirectory()){  
            targetFile.mkdir();  
        }  
        try {  
            for(File file:sourceFiles){  
                fw = new FileWriter(targetFilePath+"\\"+file.getName().replaceAll(originalSuffix, targetSuffix));  
                int len=0;  
                char[] cbuf=new char[(int)file.length()];  
                fr = new FileReader(file);  
                while((len=fr.read(cbuf))!=-1){  
                    fw.write(cbuf,0,len);  
                }  

            }  
            fw.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }     
    }  



作者: 郭强    时间: 2013-4-13 00:42
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDirectoryAndFile {
        public static void main(String[] args) throws IOException {
                String path = "C:/a";
                String copyPath = "C:/b";
                copy(path, copyPath);
        }

        public static void copy(String path, String copyPath) throws IOException {
                File filePath = new File(path);
                DataInputStream read;
                DataOutputStream write;
                if (filePath.isDirectory()) {
                        File[] list = filePath.listFiles();
                        for (int i = 0; i < list.length; i++) {
                                String newPath = path + File.separator + list[i].getName();
                                String newCopyPath = copyPath + File.separator
                                                + list[i].getName();
                                File newFile = new File(copyPath);
                                if (!newFile.exists()) {
                                        newFile.mkdir();
                                }
                                copy(newPath, newCopyPath);
                        }
                } else if (filePath.isFile()) {
                        read = new DataInputStream(new BufferedInputStream(
                                        new FileInputStream(path)));
                        write = new DataOutputStream(new BufferedOutputStream(
                                        new FileOutputStream(copyPath)));
                        byte[] buf = new byte[1024 * 512];
                        while (read.read(buf) != -1) {
                                write.write(buf);
                        }
                        read.close();
                        write.close();
                } else {
                        System.out.println("请输入正确的文件名或路径名");
                }
        }
}
有不明白的可以站短我。
作者: 郭强    时间: 2013-4-13 00:44
另外,你的程序,可以修改一下,用递归来实现遍历文件夹下所有的子文件夹和文件的。
作者: 黄玉昆    时间: 2013-4-13 08:25
建议你的代码加上相应的注释,这样思路会清晰些,也能发现自己的问题所在
作者: 将臣    时间: 2013-4-13 08:30
郭强 发表于 2013-4-13 00:44
另外,你的程序,可以修改一下,用递归来实现遍历文件夹下所有的子文件夹和文件的。 ...

我换了 一种方式 成功了 谢谢啦!
作者: 将臣    时间: 2013-4-13 08:30
黄玉昆 发表于 2013-4-13 08:25
建议你的代码加上相应的注释,这样思路会清晰些,也能发现自己的问题所在 ...

好滴 版主大大




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