公司數(shù)據(jù)文件時(shí)標(biāo)不對(duì),所有的文件必須要修改文件名來(lái)對(duì)應(yīng)時(shí)標(biāo)。
所以就寫(xiě)下了這個(gè)批量修改文件名的程序。
我的這個(gè)文件修改是很有規(guī)律的,所以在看之前首先問(wèn)下你的那個(gè)有沒(méi)有規(guī)律。
如果沒(méi)有的話(huà),可以采用弄一個(gè)數(shù)據(jù)庫(kù)table來(lái)進(jìn)行修改。
一下是源代碼:
package com.duduli.li;
import java.io.File;
/*
* @duduli
* 把需要修改的文件放在f:\filedir下面,生成的文件會(huì)在D:\1文件夾下面。
* 錯(cuò)誤一:沒(méi)按時(shí)間進(jìn)位,會(huì)出現(xiàn)09_20091020_DI02_425.xml.gz,和09_20091020_DI02_125.xml.gz.的文件。
對(duì)于125的文件不必修改前面的20091020,只需要把125改為101就可以了,但是對(duì)于425的文件就需要修改時(shí)間了把時(shí)間推后一天改為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];
// 文件時(shí)間推后一個(gè)小時(shí)
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");
}
}
源代碼如下,其實(shí)思想很簡(jiǎn)單使用的方法也就只有幾個(gè)。
三個(gè)月沒(méi)摸Java了感覺(jué)都生疏了。
興趣的話(huà)可以將那個(gè)跨天和跨月的弄一些,其實(shí)也很簡(jiǎn)單,只是沒(méi)那么時(shí)間。