黑马程序员技术交流社区
标题:
将指定目录下的所有文件改后缀名:源码
[打印本页]
作者:
午夜b'Boy
时间:
2014-3-20 12:30
标题:
将指定目录下的所有文件改后缀名:源码
package com.itcast;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
public class FileNameChange {
/**
* 功能:因为在网上下载了java源代码到手机上,用手机打不开java文件,所以编写此程序,将电脑中
*指定文件夹下的java文件全部改名为txt文件;方便于手机阅读;
*
*
* 思路:通过传入三个args参数,对指定文件夹中的指定类型文件改后缀名;
* args1: 确定要遍历的文件夹
* args2: 确定要查找的文件类型
* args3: 确定要替换的目的后缀名
* 封装对象来实现;
* @param args
*/
private File dir;//目录名
private String source;//原扩展名
private String purpose;//目标扩展名
//构造函数
public FileNameChange(String fileName,String source,String purpose){
File dir=new File(fileName);
if(!(dir.exists()&&dir.isDirectory())){
throw new RuntimeException("指定文件夹不存在;请确认!");
}
this.dir=dir;
this.purpose=purpose;
this.source=source;
};
//构造函数
public FileNameChange(String ...args){
this(args[0],args[1],args[2]);
}
//定义改扩展名函数
public void change(){
//集合存储扩展名符合要求的文件
ArrayList<File> list=new ArrayList<File>();
//遍历目录。是目录递归调用,是要的文件则存集合
listFiles(dir,list);
System.out.println("list.size="+list.size());
for(int i=0;i<list.size();i++){
//具体改名动作,封装成函数
reName(list.get(i));
}
}
private void listFiles(File dir,List list){
File[] files=dir.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
listFiles(files[i],list);
}else {
if(files[i].getName().endsWith(source)){
list.add(files[i]);
//也可以把改名函数,放在这提高效率;
}
// System.out.println(files[i].getParent());
// System.out.println(files[i].getAbsolutePath());
// System.out.println(files[i].getPath());
// System.out.println(files[i].getName());
}
}
}
private void reName(File file){
//获取所在目录
File dir=file.getParentFile();
//获取文件名
String name=file.getName();
//要改名了;
name=name.replace(source, purpose);
//先建立文件
File dest=new File(dir,name);
System.out.println(dest);
//再将原文件重命名
file.renameTo(dest);
}
/* File[] files=dir.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
return pathname.getName().endsWith(source);
}
});
for(int i=0;i<files.length;i++){
System.out.println(files[i].getAbsolutePath()+files[i].getName());
}
}*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length!=3){
throw new RuntimeException("请安要求传入参数:1目录,2源文件后缀,3替换后缀");
}
FileNameChange obj=new FileNameChange(args);
obj.change();
}
}
复制代码
51CTO下载.rar
2014-3-20 12:29 上传
点击文件名下载附件
307.97 KB, 下载次数: 89
作者:
午夜b'Boy
时间:
2014-3-20 12:45
附件为java基础知识源码,供参考。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2