各位大家好,小弟目前想使用java來整理目錄內的檔案,但是檔案太多又沒有分類,所以想先建
立一個資料庫來把檔案名稱、大小及目錄位置記錄起來以便之後好整理。
目前使用FILE的getName()、getParent()、getLength()加遞迴的方式(找子目錄)
的方式可以弄出來功能了,但就是速度很慢,找 35000個左右的檔案花了快20分鐘,但這只是其中一個資料夾,還有十來個資料夾需要作一樣的動作,請問各位先前有什麼建議嗎??
謝謝。
public class getFile {
private static String s = "";
private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) {
if(ret.length>0){
for(int i=0; i<ret.length; i++){
s = "M:\\XX\\YY"";
File file = new File(s);
//先檢查資料夾存不存在, 存在才進去掃
if(file.exists()){
getFileList(s);
}
}
}
}
public static void getFileList(String directory) {
File f = new File(directory);
File[] files = f.listFiles();
String sql = "";
System.out.println("files.length:"+files.length);
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
//列出檔名(含完整路徑)
String fileName = "";
String filePath = "";
String keyWord = "";
String keyWrod2 = "";
String keyWord3 = "";
fileName = files[i].getName();
filePath = files[i].getParent();
keyWord = String.valueOf(files[i].length());
keyWrod2 = "";
keyWord3 = "";
//用\\當作分隔符號來判斷有幾層並塞進array中
String[] ss = filePath.split("\\\\");
for(int j=0; j<ss.length; j++){
if(j==6){
keyWord = ss[j];
}
if(j==7){
keyWrod2 = ss[j];
}
}
System.out.println("file Name:"+fileName);
System.out.println("path name:"+filePath);
System.out.println("keyWord:"+keyWord);
System.out.println("keyWrod2:"+keyWrod2);
} else {
//如果不是檔案,就再遞迴往下抓,抓到最後一層再列出
try{
System.out.println("i:"+i);
System.out.println("files[i]:"+files[i]);
getFileList(files[i].getAbsolutePath());
}catch (Exception e){
}
}
}
}
}