公司數據文件時標不對,所有的文件必須要修改文件名來對應時標。
所以就寫下了這個批量修改文件名的程序。
我的這個文件修改是很有規律的,所以在看之前首先問下你的那個有沒有規律。
如果沒有的話,可以采用弄一個數據庫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了感覺都生疏了。
興趣的話可以將那個跨天和跨月的弄一些,其實也很簡單,只是沒那么時間。