A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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();
               
                }
        }
}

12 个回复

倒序浏览
我来给你顶贴!
回复 使用道具 举报
赞一个!
回复 使用道具 举报
问一下会不会有深入的要求,比如要将这个文件夹子目录里的这种文件也拷贝过去?
回复 使用道具 举报
sven556677 发表于 2015-8-21 21:40
问一下会不会有深入的要求,比如要将这个文件夹子目录里的这种文件也拷贝过去? ...

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

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

又想了下,那如果是这样的话,第二部分的那个FileNameFilter里的过滤条件过滤的是java 结尾的吧,我这块也忘了,不知道有没有看懂。是不是还需要加一个也是文件夹的筛选啊。
回复 使用道具 举报
赞一个
回复 使用道具 举报
晨曦遇晓 发表于 2015-8-21 22:05
可以使用递归 需要在第四步for中添加一个if判断语句if(files.isDirectory())如果是文件夹则继续判断循环 ...

return new File(dir,name).isFile() && name.endsWith(".java");
这一句话加上一个||File(dir).isDictionary?
回复 使用道具 举报
sven556677 发表于 2015-8-21 22:13
又想了下,那如果是这样的话,第二部分的那个FileNameFilter里的过滤条件过滤的是java 结尾的吧,我这块 ...

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

对 这样修改更合适
回复 使用道具 举报
必须赞一个
回复 使用道具 举报

谢谢啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马