黑马程序员技术交流社区

标题: 还有更好的方法吗? [打印本页]

作者: 下一秒温存    时间: 2014-11-6 10:49
标题: 还有更好的方法吗?
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);
                        }
                }


        }
}

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

非常感谢!




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