黑马程序员技术交流社区

标题: 自己写的的IO流方面关于复制文件并改名的一个小案例 [打印本页]

作者: 薛灵云    时间: 2015-8-24 01:27
标题: 自己写的的IO流方面关于复制文件并改名的一个小案例
package cn.itcast;

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

public class CopyTxtFileDemo {
       
        /*
         * 复制文件并改名案例
         */
       
        public static void main(String[] args) throws IOException {
               
                // 获取数据源文件夹对象
                File srcFileDir = new File("C:\\Users\\SuperHan\\Desktop\\20150716java基础班相关");
               
                /*
                // 补充一下: 如果不采用文件名称过滤器,一样可以自己去判断实现,但不高大上
                File[] srcFiles = srcFileDir.listFiles();
                // 创建File集合接收符合条件的File对象
                ArrayList<File> list = new ArrayList<File>();
               
                for (File file : srcFiles) {
                        if (file.isFile() && file.getName().endsWith(".txt")) {
                                list.add(file);
                        }
                }
                // 接下来遍历集合获取到每一个File对象,操作与下面一致了。
                */
               
                // 获取数据源文件夹下所有符合条件的文件对象数组 -- 采用文件名称过滤器
                File[] srcFiles = srcFileDir.listFiles(new FilenameFilter() {
                        @Override
                        public boolean accept(File dir, String name) {
                                File file = new File(dir, name); // 根据父目录对象 和 文件名称创建文件对象
                                return file.isFile() && name.endsWith(".txt");
                        }
                });
               
                // 创建目的地文件夹
                File destFileDir = new File("D:\\jad");
                if (!destFileDir.exists()) {
                        destFileDir.mkdir();
                }
               
                // 遍历文件数组,获取到每一个文件
                for (File file : srcFiles) {
                        // 每一个需要拷贝的源文件 -- file
                        // 获取到该文件的名字,以用来创建新文件的名称
                        String name = file.getName();
                        String newName = name.replace(".txt", ".jad");
                       
                        // 把目的地文件拼起来 -- 目的地文件
                        File destFile = new File(destFileDir, newName); // 根据父目录对象 和 文件名称创建文件对象
                       
                        // 有了数据源和目的地,封装流对象
                        BufferedReader br = new BufferedReader(new FileReader(file));
                        BufferedWriter bw = new BufferedWriter(new FileWriter(destFile)); // -- 创建目标文件
                       
                        // 读写操作
                        String line = null;
                        while ((line = br.readLine()) != null) {
                                bw.write(line);
                                bw.newLine();
                                bw.flush();
                        }
                       
                        // 释放资源
                        bw.close();
                        br.close();
                }
        }
}


作者: jaunce    时间: 2015-8-24 07:13
不错,看楼主代码IO不简单啊
作者: heima_cy    时间: 2015-8-24 09:08
你是大神
作者: vipsong    时间: 2015-8-24 11:28
不错,挺好的




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