黑马程序员技术交流社区

标题: 将指定目录下的所有文件改后缀名:源码 [打印本页]

作者: 午夜b'Boy    时间: 2014-3-20 12:30
标题: 将指定目录下的所有文件改后缀名:源码
  1. package com.itcast;

  2. import java.io.File;
  3. import java.io.FileFilter;
  4. import java.util.ArrayList;
  5. import java.util.List;

  6. public class FileNameChange {

  7.         /**
  8.          * 功能:因为在网上下载了java源代码到手机上,用手机打不开java文件,所以编写此程序,将电脑中
  9.          *指定文件夹下的java文件全部改名为txt文件;方便于手机阅读;
  10.          *
  11.          *
  12.          * 思路:通过传入三个args参数,对指定文件夹中的指定类型文件改后缀名;
  13.          * args1:        确定要遍历的文件夹
  14.          * args2:        确定要查找的文件类型
  15.          * args3:        确定要替换的目的后缀名
  16.          * 封装对象来实现;
  17.          * @param args
  18.          */
  19.        
  20.         private File dir;//目录名
  21.         private String source;//原扩展名
  22.         private String purpose;//目标扩展名
  23.        
  24.        
  25.         //构造函数
  26.         public FileNameChange(String fileName,String source,String purpose){
  27.                 File dir=new File(fileName);
  28.                 if(!(dir.exists()&&dir.isDirectory())){
  29.                         throw new RuntimeException("指定文件夹不存在;请确认!");
  30.                 }
  31.                 this.dir=dir;
  32.                 this.purpose=purpose;
  33.                 this.source=source;
  34.                
  35.         };
  36.        
  37.         //构造函数
  38.         public FileNameChange(String ...args){
  39.                 this(args[0],args[1],args[2]);
  40.         }
  41.        
  42.         //定义改扩展名函数
  43.         public void change(){
  44.                 //集合存储扩展名符合要求的文件
  45.                 ArrayList<File> list=new ArrayList<File>();
  46.                 //遍历目录。是目录递归调用,是要的文件则存集合
  47.                 listFiles(dir,list);
  48.                 System.out.println("list.size="+list.size());
  49.                 for(int i=0;i<list.size();i++){
  50.                         //具体改名动作,封装成函数
  51.                         reName(list.get(i));
  52.                 }
  53.         }
  54.        
  55.         private void listFiles(File dir,List list){
  56.                 File[] files=dir.listFiles();
  57.                 for(int i=0;i<files.length;i++){
  58.                         if(files[i].isDirectory()){
  59.                                 listFiles(files[i],list);
  60.                         }else {
  61.                                 if(files[i].getName().endsWith(source)){
  62.                                 list.add(files[i]);
  63.                                 //也可以把改名函数,放在这提高效率;
  64.                                 }
  65. //                                System.out.println(files[i].getParent());
  66. //                                System.out.println(files[i].getAbsolutePath());
  67. //                                System.out.println(files[i].getPath());
  68. //                                System.out.println(files[i].getName());
  69.                                
  70.                         }
  71.                 }
  72.         }
  73.        
  74.         private void reName(File file){
  75.                 //获取所在目录
  76.                 File dir=file.getParentFile();
  77.                 //获取文件名
  78.                 String name=file.getName();
  79.                 //要改名了;
  80.                 name=name.replace(source, purpose);
  81.                 //先建立文件
  82.                 File dest=new File(dir,name);
  83.                
  84.                 System.out.println(dest);
  85.                 //再将原文件重命名
  86.                 file.renameTo(dest);
  87.         }
  88.        
  89.        
  90. /*                File[] files=dir.listFiles(new FileFilter(){

  91.                         @Override
  92.                         public boolean accept(File pathname) {
  93.                                 // TODO Auto-generated method stub
  94.                                 return pathname.getName().endsWith(source);
  95.                         }
  96.                        
  97.                 });
  98.                 for(int i=0;i<files.length;i++){
  99.                         System.out.println(files[i].getAbsolutePath()+files[i].getName());
  100.                 }
  101.                
  102.         }*/

  103.         public static void main(String[] args) {
  104.                 // TODO Auto-generated method stub
  105.                 if(args.length!=3){
  106.                         throw new RuntimeException("请安要求传入参数:1目录,2源文件后缀,3替换后缀");
  107.                 }
  108.                 FileNameChange obj=new FileNameChange(args);
  109.                 obj.change();
  110.                
  111.         }

  112. }
复制代码

51CTO下载.rar

307.97 KB, 下载次数: 89


作者: 午夜b'Boy    时间: 2014-3-20 12:45
附件为java基础知识源码,供参考。




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