各位高手好,我现在在做一个批量修改文件名称的小程序,现在出现的问题是,文件夹里面的许多文件,只有一部分文件的名称修改成功,而令一部分文件的名称没有被修改,我实在是看不出问题出在哪里,我把代码贴出来,希望高手指点!
       
 
   package cn.com.aa.test;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Properties;public class ExampleDataFile {
public static void main(String[] args) {
String fileUrl = "E:\\mine\\爱立信指标查询";
ExampleDataFile exp = new ExampleDataFile();
exp.getFolderContent(fileUrl); } private void getFolderContent(String fromFile) { try {
File fi = new File(fromFile);
if (fi.isFile()) { // 如果是文件
// 这里加上你的修改文件方法
} else { // 如果是文件目录则读取目录下的所有文件
File[] file = null;
if (fi.listFiles() != null) {
file = fi.listFiles();
} else {
file = new File[1];
file[0] = fi;
}
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 修改文件方法
String url = fromFile + "\\" + file[i].getName();
String newName = file[i]
.getName()
.replaceAll(
"(\\d{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])",
"20110730");
File file2 = new File(url);
// 设置重命名规则
file2.renameTo(new File(fromFile + "\\" + newName));
System.out.println("old" + file[i].getName() + "   new"
+ newName + "   =newFile: " + fromFile
+ file2.getName());
}
if (file[i].isDirectory()) { // 递归得到所有的文件,直到至最后一级 getFolderContent(fromFile + File.separator
+ file[i].getName());
}
}
}
} catch (Exception e) {
e.printStackTrace();
} }
}

解决方案 »

  1.   

    看你上面的import...很多流,你在写的时候,有森有关闭流啊。。
      

  2.   

    String newName = file[i]
    .getName()
    .replaceAll(
    "(\\d{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])",
    "20110730");得符合这个命名规则的文件名才会被修改
      

  3.   

    String newName = file[i]
    .getName()
    .replaceAll(
    "(\\d{4})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])",
    "20110730");得符合这个命名规则的文件名才会被修改