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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© JOKER0819 中级黑马   /  2015-8-29 22:38  /  514 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
*         需求:把一个文件夹下的文件复制到另外一个文件夹,并改名。(注:此文件下的.java文件不是终极目录)
*  数据源:"C:\\java\\itheima\\0801"
*  目的地:"c:\\java\\java\\copys"
*  思路:        1.一看到复制文件夹的.java类型的文件,首先考虑的文件过滤器和递归,进一步分析,本题用递归来解。
*          2.判断目的地的文件夹是否存在,不存在就创建文件夹。
*          3.判断是否是文件--是--判断是否是后缀.java的文件--用高字符流输入和输出
*                                  不是--回到步骤2
*          4.给文件夹改名
*/
public class CopysFiles {
        public static void main(String[] args) throws IOException {
                // 封装数据源:有关文件的题,首先想到的就该是这个
                File scr = new File("C:\\java\\itheima\\0801");
                copys(scr);
        }

        public static void copys(File scr) throws IOException {
                // 封装目的地
                File dest = new File("c:\\java\\java\\copys");
                // 判断目的地中的文件是否存在,不存在则建立文件目录
                if (!dest.exists()) {
                        dest.mkdirs();
                }
                // 获取文件下的所有文件和文件夹
                File[] files = scr.listFiles();
                // 遍历文件夹数组
                for (File f : files) {
                        // 凡是对象都要先判断对象是否为空
                        if (f != null)
                                // 判断是不是文件
                                if (f.isFile()) {
                                        // 判断是不是以.java结尾
                                        if (f.getName().endsWith(".java")) {
                                                File newdest = new File(dest, f.getName());
                                                // 输入和输出
                                                BufferedReader br = new BufferedReader(
                                                                new FileReader(f));
                                                BufferedWriter bw = new BufferedWriter(new FileWriter(
                                                                newdest));
                                                String line = null;
                                                while ((line = br.readLine()) != null) {
                                                        bw.write(line);
                                                        bw.newLine();
                                                        bw.flush();
                                                }
                                                bw.close();
                                                br.close();
                                        }
                                        // 递归
                                } else {
                                        copys(f);
                                }
                }
                //获取并遍历已经被复制过去的文件
                File[] files2 = dest.listFiles();
                for (File f : files2) {
                        //获取改名字后的文件名
                        String newName = f.getName().replace(".java", ".txt");
                        //封装新的文件
                        File file3 = new File(dest, newName);
                        //改名
                        f.renameTo(file3);
                }
        }
}

2 个回复

倒序浏览
个人感觉,这道题能搞定的话,IO的面试题就都能搞定了!
回复 使用道具 举报
很好 谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马