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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 编程小黑 中级黑马   /  2015-7-26 07:50  /  204 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
需求:将"C:\kaifa\Javacode\day18\aaa"目录下的所有.java文件
全都复制到"d:\\bbb"目录下,并且将后缀名改名为.txt
*/
/*
思路:1、封装目录对象,然后通过递归的方法获得所有的.java文件

                2、将获得的.java文件,获得他的文件的绝对路径,然后转为字符串,再替换掉原来的字符串
                        以这个字符串做为当前路径的名称,然后

                        3、复制到指定的文件夹之中(BufferReader,BufferWriter)
        //String replace(char oldChar, char newChar)
                                //  返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
                                //Stringfi.toString().replace()
                                //File getAbsoluteFile() .replace(".java",".txt");getAbsolutePath()
                                //String getAbsolutePath()  返回此抽象路径名的绝对路径名字符串。

                                //System.out.println();
*/
import java.io.File;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
class CopyRenameDemo
{
        public static void main(String[] args) throws IOException
        {
                //BufferedReader br = new BufferedReader(new FileReader(""))
                File file = new File("C:\\kaifa\\Javacode\\day18\\aaa");
               
                getRename(file);
        }
        public static void getRename(File file)throws IOException{
                        //File file2 = new File("D:\\ddd\\ddd.txt");
                        //                file2.mkdirs();
                        //String getAbsolutePath()  返回此抽象路径名的绝对路径名字符串。
                         

                File[] fil = file.listFiles();

                        for(File fi : fil){
                         //boolean isDirectory()
                                if(fi.isDirectory()){
                                        getRename(fi);
                                }else if(fi.getAbsolutePath().endsWith(".java")){
                                                //String getName()
                                                String s = fi.getName();
                                                String s2 = s.replace(".java",".txt");
                                                File file2 = new File("d:\\ddd",s2);
                                                if(!(file2.exists())){
                                                file2.createNewFile();
                                                }
                                                BufferedReader br = new BufferedReader(new FileReader(fi.getAbsolutePath()));
                                                //因为你每一次都是创建了一个新的txt文件,所以到最后保存的就只有一个而已
                                                //因此,需要改进
                                                BufferedWriter bw = new BufferedWriter(new FileWriter(file2));

                                                char[] ch =new char[1024];
                                                int len =0;
                                                while((len=br.read(ch))!=-1){
                                                        bw.write(ch,0,len);
                                                }
                                                br.close();
                                                bw.close();
                                                }//else结束的位置
                                                }//for循环结束的位置



               
        }
}

1 个回复

倒序浏览
面试好像会出这类题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马