公司数据文件时标不对,所有的文件必须要修改文件名来对应时标。
所以就写下了这个批量修改文件名的程序。
我的这个文件修改是很有规律的,所以在看之前首先问下你的那个有没有规律。
如果没有的话,可以采用弄一个数据库table来进行修改。
一下是源代码:
package com.duduli.li;
import java.io.File;
/*
* @duduli
* 把需要修改的文件放在f:\filedir下面,生成的文件会在D:\1文件夹下面。
* 错误一:没按时间进位,会出现09_20091020_DI02_425.xml.gz,和09_20091020_DI02_125.xml.gz.的文件。
对于125的文件不必修改前面的20091020,只需要把125改为101就可以了,但是对于425的文件就需要修改时间了把时间推后一天改为09_20091021_DI02_401.xml.gz.。
*/
public class ReFileName {
public static void findFile(String filePath) {
File file = new File(filePath);
if (file.isDirectory()) {
String[] fileDir = file.list();
String fileNameWithPath;
for (int i = 0; i < fileDir.length; i++) {
String fileNewName = "";
System.out.println(file.getAbsolutePath() + "\\" + fileDir[i]);
fileNameWithPath = file.getAbsolutePath() + "\\" + fileDir[i];
// 文件时间推后一个小时
int addOne = Integer.parseInt(fileDir[i].substring(14, 16)) + 1;
// String addOneToString = addOne + "";
if (addOne <= 9) {
fileNewName = "06" + fileDir[i].substring(2, 14) + "0"
+ addOne + ".xml.gz";
} else {
fileNewName = "06" + fileDir[i].substring(2, 14) + addOne
+ ".xml.gz";
}
// String fileNewName = "06"+fileDir[i].substring(2,14);
System.out.println(fileNewName);
// System.out.println(addOne);
File f = new File(fileNameWithPath);
f.renameTo(new File("d:\\1\\"+fileNewName));
}
// File fileAbsPath = new File (file)
// System.out.println(file.getAbsolutePath());
} else {
String[] fileDoc = file.list();
for (int i = 0; i < fileDoc.length; i++) {
System.out.println("file dire: " + fileDoc[i]);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
findFile("f:/filedir");
}
}
源代码如下,其实思想很简单使用的方法也就只有几个。
三个月没摸Java了感觉都生疏了。
兴趣的话可以将那个跨天和跨月的弄一些,其实也很简单,只是没那么时间。