黑马程序员技术交流社区

标题: 如何将全部相同类型的文件拷贝到指定的文件中 [打印本页]

作者: 晨曦遇晓    时间: 2015-8-21 21:24
标题: 如何将全部相同类型的文件拷贝到指定的文件中
public class CopyFiles2 {
/*
* 需求:将指定路径内的指定文件复制到另一个路径下
* */
        public static void main(String[] args) throws IOException {
                /**
                 * 1.首先确定源目标地址
                 * */
                File src=new File("D:\\hello");
               
                /**
                 * 2.获取地址下的所有.java后缀的文件名
                 * */
               
                File[] file=src.listFiles(new FilenameFilter() {

                        public boolean accept(File dir, String name) {
                                return new File(dir,name).isFile() && name.endsWith(".java");
                        }
                });       
               
                /**
                 * 3.创建需要将内容拷贝的地址
                 * */
                File newSrc=new File("E:\\world");
                if(!newSrc.exists()){
                        newSrc.mkdir();
                }
               
                /**
                 * 4.遍历初始指定的地址 将里面所有符合条件的文件后缀改为.html
                 * */
                for(File files:file){
                        String filename=files.getName();//这是获得文件的名字
                        String newFilename=filename.replace(".java", ".html");//将文件名字后缀替换为html
                        File creatSrc=new File(newSrc,newFilename);//新建一个File 通过构造将路径,更改后的文件名添加进去
                        //creatSrc.createNewFile();
                       
                        /**
                         * 5.通过IO将文件复制到指定路径
                         * */
                        BufferedReader br=new BufferedReader(new FileReader(files));
                        BufferedWriter bw=new BufferedWriter(new FileWriter(creatSrc));
                       
                        String line=null;
                       
                        while((line=br.readLine())!=null){
                                bw.write(line);
                                bw.newLine();
                                bw.flush();
                        }
                        br.close();
                        bw.close();
               
                }
        }
}
作者: 高山高水高小波    时间: 2015-8-21 21:26
我来给你顶贴!
作者: 蓬头小道士    时间: 2015-8-21 21:32
赞一个!
作者: sven556677    时间: 2015-8-21 21:40
问一下会不会有深入的要求,比如要将这个文件夹子目录里的这种文件也拷贝过去?
作者: 晨曦遇晓    时间: 2015-8-21 22:05
sven556677 发表于 2015-8-21 21:40
问一下会不会有深入的要求,比如要将这个文件夹子目录里的这种文件也拷贝过去? ...

可以使用递归 需要在第四步for中添加一个if判断语句if(files.isDirectory())如果是文件夹则继续判断循环
作者: sven556677    时间: 2015-8-21 22:07
晨曦遇晓 发表于 2015-8-21 22:05
可以使用递归 需要在第四步for中添加一个if判断语句if(files.isDirectory())如果是文件夹则继续判断循环 ...

哟西,学习了。
作者: sven556677    时间: 2015-8-21 22:13
晨曦遇晓 发表于 2015-8-21 22:05
可以使用递归 需要在第四步for中添加一个if判断语句if(files.isDirectory())如果是文件夹则继续判断循环 ...

又想了下,那如果是这样的话,第二部分的那个FileNameFilter里的过滤条件过滤的是java 结尾的吧,我这块也忘了,不知道有没有看懂。是不是还需要加一个也是文件夹的筛选啊。
作者: 费世福    时间: 2015-8-21 22:15
赞一个

作者: sven556677    时间: 2015-8-21 22:16
晨曦遇晓 发表于 2015-8-21 22:05
可以使用递归 需要在第四步for中添加一个if判断语句if(files.isDirectory())如果是文件夹则继续判断循环 ...

return new File(dir,name).isFile() && name.endsWith(".java");
这一句话加上一个||File(dir).isDictionary?
作者: 晨曦遇晓    时间: 2015-8-22 21:53
sven556677 发表于 2015-8-21 22:13
又想了下,那如果是这样的话,第二部分的那个FileNameFilter里的过滤条件过滤的是java 结尾的吧,我这块 ...

那里就是需要过滤的条件 将需要过滤的要求设置就可以了 比如我这个仅仅是设置的是以文件 并且是以.java文件结尾的进行遍历修改并拷贝
作者: 晨曦遇晓    时间: 2015-8-22 22:05
sven556677 发表于 2015-8-21 22:16
return new File(dir,name).isFile() && name.endsWith(".java");
这一句话加上一个||File(dir).isDicti ...

对 这样修改更合适
作者: 朱玉正    时间: 2015-8-22 22:21
必须赞一个
作者: 晨曦遇晓    时间: 2015-8-23 09:00
朱玉正 发表于 2015-8-22 22:21
必须赞一个

谢谢啦




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