- package com.itheima;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.List;
- public class Test9 {
- /**
- * 9、 编写一个程序,将d:\java 目录下的所有.java 文件复制到d:\jad 目录下,并将 原来文件的扩展名从.java 改为.jad。
- */
- public static void main(String[] args) {
- File oldFileDir = new File("d:\\java"); // 源文件文件夹对象
- File newFileDir = new File("d:\\jad"); // 目标文件夹对象
- // 所有文件名称路径
- List<File> javaFileList = new ArrayList<File>();
- getFiles(oldFileDir, javaFileList);
- // 所有新文件名称路径
- List<File> listNewName = new ArrayList<File>();
- nameSplit(javaFileList, listNewName, newFileDir);
- // 复制文件
- copyFileList(javaFileList, listNewName);
- }
- // 复制多个文件
- private static void copyFileList(List<File> oldFileList,
- List<File> newFileList) {
- for (int i = 0; i < oldFileList.size(); i++) {
- // 调用复制文件方法
- copyFile(oldFileList.get(i), newFileList.get(i));
- }
- }
- // 复制单个文件
- private static void copyFile(File oldFile, File newFile) {
- BufferedReader bufr = null;
- BufferedWriter bufw = null;
- try {
- // 因为我要复制的文件编码为本地编码(GBK),防止乱码
- bufr = new BufferedReader(new InputStreamReader(
- new FileInputStream(oldFile), "GBK"));
- bufw = new BufferedWriter(new FileWriter(newFile));
- String line = null;
- while ((line = bufr.readLine()) != null) {
- bufw.write(line);
- bufw.newLine();
- bufw.flush();
- }
- } catch (Exception e) {
- System.out.println(e.toString());
- } finally {
- try {
- if (bufr != null)
- bufr.close();
- } catch (IOException e) {
- System.out.println(e.toString());
- }
- try {
- if (bufw != null)
- bufw.close();
- } catch (IOException e) {
- System.out.println(e.toString());
- }
- }
- }
- // 获取新生成文件路径名称
- private static void nameSplit(List<File> files, List<File> listNewName,
- File newFileDir) {
- String ss = null;
- for (int i = 0; i < files.size(); i++) {
- String s = files.get(i).getName();
- // 截取.java前的文件名称
- String[] arrs = s.split("\\.");
- // 拼接字符串生成新文件名称
- ss = arrs[0] + ".jad";
- // 装成File对象,添加到新名称集合中封
- listNewName.add(new File(newFileDir, ss));
- }
- }
- // 该方法用来获取所有文件夹下所有的文件
- private static void getFiles(File oldFileDir, List<File> javaFileList) {
- File[] fileDirs = oldFileDir.listFiles();
- for (int i = 0; i < fileDirs.length; i++) {
- // 如果是目录递归调用该方法获取所有文件
- if (fileDirs[i].isDirectory()) {
- getFiles(fileDirs[i], javaFileList);
- } else {
- // 判断文件是否以.java结尾,如果拓展名不是.java则不会被添加到集合中
- if (fileDirs[i].getName().endsWith(".java"))
- javaFileList.add(fileDirs[i]);
- }
- }
- }
- }
复制代码 改吧改吧用吧~! |