日期:2014-05-20  浏览次数:20698 次

求各位前辈指导,谢谢了
写一个工具,要求:

对指定路径下的文件(包括其所有子目录)进行操作,将文件名中含有”.”的字符转成”_” 

例如:XXX/XXX/XXX 目录下有 “数学_7上 1.1 1 正数与负数的概念--T1.flv” 文件
转成:XXX/XXX/XXX 目录下   “数学_7上 1_1 1 正数与负数的概念--T1.flv” 

------解决方案--------------------
我比较好奇的是
aaa.bbb(.bbb不是文件后缀名)
aaa.flv
我怎么区分?
------解决方案--------------------
用递归找出所有子目录
然后用namefilter 加正则表达式过滤出所有带.的文件夹
然后再修改文件名

------解决方案--------------------
所有.转换成_那后缀名的那个.也要转吗。
------解决方案--------------------
作业题自己也多思考一下嘛

package com.study.test;

import java.io.File;


public class Test {

public static void main(String[] args) {
File file = new File("D:\\1");
reName(file);
}

public static void reName(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
reName(f);
}
}else{
String fileName = file.getName();
String ex = fileName.substring(fileName.lastIndexOf("."));
fileName = fileName.substring(0, fileName.lastIndexOf("."));
fileName = fileName.replaceAll("\\.", "_");
file.renameTo(new File(file.getParent() + File.separator + fileName + ex));
}
}
}

------解决方案--------------------
public class StackWord {
    public static void main(String[] args){
     subString("D:\\log");
        }

    
    public static void subString(String filePath){
File file = new File(filePath);
File [] filelist = file.listFiles();
for(int i=0;i<filelist.length;i++){
String str = filelist[i].getName().substring(filelist[i].getName().lastIndexOf("."));
System.out.println(filelist[i].getName().substring(0, filelist[i].getName().length()-str.length())); 
}
}
}