黑马程序员技术交流社区

标题: 练习_复制指定目录下指定后缀名的文件并修改名称案例; [打印本页]

作者: an3077458    时间: 2015-9-24 19:58
标题: 练习_复制指定目录下指定后缀名的文件并修改名称案例;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

/*
* 复制指定目录下指定后缀名的文件并修改名称案例
* 将C:\\20150822\\目录下的所有.java文件,复制到C:\\java_copy\\目录下,
* 并将文件重命名为:原文件名_毫秒值.txt
*
* 1.封装初始目录:File
* 2.封装目标目标:File
* 3.获取初始目录下的所有文件和目录:listFiles
* 4.遍历数组,获取每一个File;
* 5.验证File是否是文件,并且是.java结尾:
*                 是:复制;
*                 否:验证是否是目录:
*                         是:回到3
*        
*/
public class Demo {
        public static void main(String[] args) throws IOException {
                File srcFile = new File("C:\\20150822");
                File destFile = new File("C:\\20150822_java_copy\\");
                if(!destFile.exists()){
                        destFile.mkdir();
                }
                listFile(srcFile,destFile);
                System.out.println("全部复制完毕!");
        }

        private static void listFile(File srcFile, File destFile) throws IOException {
                if(srcFile == null || destFile == null){
                        return ;
                }
                //获取原目录下的所有文件和目录
                File[] fileArray = srcFile.listFiles();
                if(fileArray != null){
                        for(File file : fileArray){
                                if(file.isFile() && file.getName().endsWith(".java")){
                                        //复制
                                        BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
                                        BufferedOutputStream out = new BufferedOutputStream(
                                                                                                new FileOutputStream(
                                                                                                                new File(destFile,file.getName() + "_" + new Date().getTime() + ".txt")));
                                        int n = 0;
                                        byte[] byteArray = new byte[1024];
                                        while((n = in.read(byteArray)) != -1){
                                                out.write(byteArray,0,n);
                                        }
                                        out.close();
                                        in.close();
                                        System.out.println(file.getAbsolutePath() + " 复制完毕!");
                                }else if(file.isDirectory()){
                                        listFile(file,destFile);
                                }
                        }
                }
               
               
        }
}




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