各位大家好,小弟目前想使用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){
					
				}
			}			
		}	
	}
}