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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 下一秒温存 中级黑马   /  2014-11-6 10:49  /  1515 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;
/**
* 第9题:编写程序,将指定目录下所有.java文件拷贝到另一个目录中,
* 并将扩展名改为.text。
* @author ***
*/

import java.io.*;
public class Test9 {
        public static void main(String[] args) {
                File orig=new File("E:/Eclipse/workspace/exam/src"); //源文件夹
                File dest=new File("E:/Eclipse/workspace/exam/src/复制.java文件转为.text文件");//要复制过去的文件夹
                findAndCopyJava(orig,dest);

        }
        public static void copy(File orig,File dest){ //用于改后缀后复制
                BufferedReader buf = null;
                PrintWriter  out=null;;
                try{
                        buf=new BufferedReader(new InputStreamReader(new FileInputStream(orig))); //读取流,提示阅读效率
                        out=new PrintWriter(dest+"\\"+orig.getName().replace(".java", ".txt"));  // 把后缀改成.java,用Print流提升效率
                }catch(IOException e){
                        System.out.println("文件orig或者dest异常");
                }
                String line=null;
                try{
                        while((line=buf.readLine())!=null){
                                out.println(line);
                        }

                }catch(IOException e){

                }
                finally{
                        try{
                                if(buf!=null)
                                        buf.close();
                                if(out!=null)
                                        out.close();
                        }catch(Exception e2){

                        }
                }
        }
        public static void findAndCopyJava(File orig,File dest){  //
                if(!dest.exists()){         //不存在就创建目的目录,但是这个地址有可能是一个绝对地址。
                        dest.mkdir();
                }
                if(!dest.isDirectory()){    //所以再次判断存在的文件是否是一个目录,而不是文件。
                        dest.mkdir();
                }
                File[]  files=orig.listFiles();
                for(File file: files){      //遍历files
                        if(file.isDirectory()){
                                findAndCopyJava(file,dest);  //递归,一直到file是一个文件而不是目录。
                        }
                        else if(file.getName().endsWith(".java")){
                                copy(file,dest);
                        }
                }


        }
}

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

2 个回复

倒序浏览
out=new PrintWriter(dest+"\\"+orig.getName().replace(".java", ".txt"));
这句我觉得为了避免文件名中间含有.java的特殊情况 应该是:
新文件名 =  旧文件名.split(".java")[0]+".txt"; 比较稳妥一点
其他的就是 先复制后改名 和先改后复制 都熟悉下就好了
回复 使用道具 举报
郑飞 发表于 2014-11-6 11:41
out=new PrintWriter(dest+"\\"+orig.getName().replace(".java", ".txt"));
这句我觉得为了避免文件名中 ...

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