这是我以前做过的一道题目  里面涉及了你的要求   我现在把他复制给你 你看下 能帮到你么- package test2;
 
  
- 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;
 
  
- /*
 
 - 在一个文件夹内有文件夹和文件,文件名的格式为:数字+名称.java。
 
 - 要求:把所有的.java文件复制一份,变为文件名格式为:数字+名称+数字.java。
 
 - (其中数字是相对应的,名称由字母组成。如:01Demo.java——>01Demo01.java)
 
 - */
 
  
- /*
 
 -  * 思路:
 
 -  * (1). 通过递归获取指定目录下的java源文件列表  并且使用正则表达式进行过滤  降符合要求的文件添加到文件列表里面
 
 -  * (2). 对获取到的合格的文件列表复制到指定文件加下面
 
 -  * */
 
 - public class Test3{
 
 -         public static void main(String[] args) {
 
 -                 File sourceFileDir =new File("D:\\testfolder"); //源文件文件夹对象
 
 -                 File destinationFileDir =new File("D:\\testFileCopies"); //目标文件夹对象
 
 -                 //1.构建过滤文件名的正则表达式
 
 -                         //标准文件名要求:数字+名称.java  e.g. 01Demo.java
 
 -                 String fileNameRegex ="((0\\d+)Demo)(\\.java)";
 
 -                 List<File> filteredJavaFileList =new ArrayList<File>();
 
 -                 
 
 -                 //2.按照标准生成符合条件的源文件对象列表和目标文件对象列表  ---递归方式生成 
 
 -                 getQualifiedFilesList(sourceFileDir, filteredJavaFileList, fileNameRegex);
 
 -                 
 
 -                 //3.把源文件列表中的文件复制到目标地址中
 
 -                 copyFileList(filteredJavaFileList, destinationFileDir, fileNameRegex);
 
 -         }
 
 -         
 
 -         //把源文件列表中的文件复制到目标地址中
 
 -         private static void copyFileList(List<File> filteredJavaFileList,
 
 -                         File destinationFileDir, String fileNameRegex) {
 
 -                 for(File sourceJavaFile: filteredJavaFileList){
 
 -                         //根据正则标准产生按照标准的文件夹名
 
 -                         String newFileName = sourceJavaFile.getName().replaceAll(fileNameRegex, "$1$2$3");
 
 -                         File destiJavaFile =new File(destinationFileDir, newFileName);
 
 -                         System.out.println("原文件名:"+sourceJavaFile.toString()+"-----新文件名:"+ destiJavaFile);
 
 -                         //复制单个文件
 
 -                         copyFile(sourceJavaFile, destiJavaFile);
 
 -                 }
 
 -         }
 
 -         
 
 -         //复制单个文件
 
 -         private static void copyFile(File sourceJavaFile, File destiJavaFile) {
 
 -                 BufferedReader bufr =null;
 
 -                 BufferedWriter bufw =null;
 
 -                 
 
 -                 try{
 
 -                         //源(InputStream/Reader)--->文本(Reader)--->设备(硬盘文件 FileReader) --->高效(BufferedReader)
 
 -                         bufr =new BufferedReader(new InputStreamReader(new FileInputStream(sourceJavaFile), "GBK"));
 
 -                         //目标(OutputStream/Writer)--->文本(Writer)--->设备(硬盘文件 FileWriter) --->高效(BufferedWriter)
 
 -                         bufw =new BufferedWriter(new FileWriter(destiJavaFile));
 
 -                         
 
 -                         String lineContent =null;
 
 -                         System.out.println(sourceJavaFile);
 
 -                         while((lineContent =bufr.readLine()) !=null){
 
 -                                 bufw.write(lineContent);
 
 -                                 bufw.newLine();
 
 -                                 bufw.flush();
 
 -                         }
 
 -                 }catch(IOException ioe){
 
 -                         System.out.println(ioe.toString());
 
 -                 }finally{
 
 -                         try{
 
 -                                 if(bufr !=null)
 
 -                                         bufr.close();
 
 -                         }catch(IOException ioe){
 
 -                                 System.out.println(ioe.toString());
 
 -                         }
 
 -                         
 
 -                         try{
 
 -                                 if(bufw !=null)
 
 -                                         bufw.close();
 
 -                         }catch(IOException ioe){
 
 -                                 System.out.println(ioe.toString());
 
 -                         }
 
 -                 }
 
 -         }
 
  
-         private static void getQualifiedFilesList(File sourceFileDir, 
 
 -                         List<File> filteredJavaFileList, String fileNameRegex) {
 
 -                 File[] files =sourceFileDir.listFiles();
 
  
-                 //递归获取符合fileNameRegex标准的java源文件列表
 
 -                 for(int x =0; x <files.length; x++){
 
 -                         if(files[x].isDirectory()) //遍历的是目录
 
 -                                 getQualifiedFilesList(files[x], filteredJavaFileList, fileNameRegex);
 
 -                         else{//遍历到的是文件
 
 -                                 String oldFileCanonicalName =files[x].getName();
 
 -                                 //符合要求规则的全部加进来
 
 -                                 if(oldFileCanonicalName.matches(fileNameRegex)){
 
 -                                         //添加符合条件的源文件对象
 
 -                                         filteredJavaFileList.add(files[x]);
 
 -                                 }
 
 -                         }
 
 -                 }
 
 -                 
 
 -         }
 
 - }
 
  复制代码 |