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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

首先贴代码
package fuzhibinggaiming;

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;

/*
* 要求:        将一个文件夹中所有的.java文件复制转移到另一个文件夹中
*                 并且,将所有文件的后缀改成.jad
*                 数据源为:F:\\java
*                 目标源为:F:\\jad
*
* 思路:
*                 1、先创建File对象确认目标源是否存在指定的文件夹,如果不存在则创建
*                 2、创建File对象对数据源里的所有数据进行筛选,选出.java的文件
*                 3、第二步用文件过滤器 listFiles(new FileFilter){};对文件进行筛选
*                 4、循环遍历第三步的数组,将数组中的文件名修改后创建到目标源中(这里的改名要用到字符串索引与截取字符串,索引循环中加入String类)
*                 5、复制数据源的数据到目标源中
*/
public class Demo {
        public static void main(String[] args) {
                // 创建File对象确认目标源
                File file = new File("F:\\jad");

                // 确认路径文件夹是否存在
                if (!file.exists()) {
                        file.mkdir();
                }

                // 创建File对象对数据源里的数据进行筛选,选出所有.java文件
                File oldfile = new File("F:\\java");

                // 通过文件过滤器筛选我们需要的文件
                File[] fileArray = oldfile.listFiles(new FilenameFilter() {

                        // 筛选.java文件
                        public boolean accept(File dir, String name) {
                                return new File(dir, name).isFile() && name.endsWith(".java");
                        }
                });

                // 对File数组进行遍历把每个文件名修改,然后复制到目标源中
                for (File f : fileArray) {
                        // 先改名存储
                        // .getName()这个方法调用的是相对路径,也就是获取文件或文件夹的名称
                        String oldName = f.getName();
                        // 获取后缀格式的索引值
                        int index = oldName.lastIndexOf(".java");
                        // 切割字符串
                        String temp = oldName.substring(0, index);
                        // 添加制定后缀.jad
                        String newName = temp.concat(".jad");
                        // 建立目标源文件
                        File newFile = new File(file, newName);

                        // 开始复制文件内容
                        // 创建读取与写入的流对象
                        BufferedReader br = null;
                        BufferedWriter bw = null;
                        try {
                                // 匿名对象里的参数是针对文件夹下的每一个文件
                                br = new BufferedReader(new FileReader(f));
                                bw = new BufferedWriter(new FileWriter(newFile));

                                // 一行一行的读取与写入
                                String line = null;
                                while ((line = br.readLine()) != null) {
                                        bw.write(line);
                                        bw.newLine();
                                        bw.flush();
                                }
                        } catch (IOException e) {
                                e.printStackTrace();
                        } finally {

                                // 如果前面写入流对象正常运行,这里关闭流对象
                                if (bw != null) {
                                        try {
                                                bw.close();
                                        } catch (IOException e) {
                                                e.printStackTrace();
                                        }
                                }

                                // 如果前面读取流对象正常运行,这里关闭流对象
                                if (br != null) {
                                        try {
                                                br.close();
                                        } catch (IOException e) {
                                                e.printStackTrace();
                                        }
                                }
                        }
                }
        }
}

下面是效果图
程序运行以前的 F 盘盘符下的目录


java文件下的文件,包括测试用的文件夹和其他文件


程序运行后的 F 盘盘符目录


jad文件夹下的所有文件,可以看到已经获取指定文件并改名



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马