本帖最后由 王春晓 于 2013-5-16 18:36 编辑
自己写了一个可以修改某个文件夹下的指定类型的文件名的小程序,调试打印的结果没问题,但是为什么执行完没有效果呢?- package cr.victor;
- import java.io.File;
- import java.io.FilenameFilter;
- /*
- * 需求:将一个文件目录下的文件名进行修改
- *
- * 步骤:
- * 1、将目录对象传入
- * 2、判断传入的是否是目录,对该目录进行取出操作,如果其中仍是目录,则递归取出,直到拿到其中的文件名
- * 3、根据文件名判断是否是需要修改的类型
- * 4、用renameTo方法改名
- */
- public class RenameFile {
- public static void main(String[] args){
- File fdir = new File("E:\\learn");
- dir(fdir);
- }
-
- //传入一个目录,通过递归取出其中的所有文件
- public static void dir(File fdir){
- if(!fdir.isDirectory() || fdir==null)//判断传入的是否是合法目录
- throw new RuntimeException("指定目录不存在");
- else{
- File[] files = fdir.listFiles();//将目录中的文件或文件夹存入File[]中
- for(File file : files){
- if(file.isDirectory())//如果目录中还是目录,继续递归
- dir(file);
- else
- rename(file);//调用改名方法
- }
- }
- }
-
- //改名方法,用renameTo()将一个文件对象改名
- public static void rename(File file){
- //判断要改名的文件类型
- if(file.getName().endsWith(".avi")){
- File fname = new File(file.getParent()+file.getName());//原来的文件路径和文件名
- File newname = new File(file.getParent()+"\\"+"A"+file.getName());//要更改的路径和文件名
- fname.renameTo(newname);
- System.out.println(file.getParent() + "\\" + "A" + file.getName());//调试打印更改后的结果
- }
- }
- }
复制代码 |