iT邦幫忙

0

java列出所有目錄內的檔案名稱及容量

clcy 2019-07-04 10:27:454855 瀏覽
  • 分享至 

  • xImage

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

			}			
		}	
	}
}
小魚 iT邦大師 1 級 ‧ 2019-07-04 10:30:38 檢舉
我倒是沒處理過這麼多檔案,
要花多少時間沒什麼概念,
不過我的建議是你把相關程式碼貼出來,
別人才有辦法給你建議.
clcy iT邦新手 3 級 ‧ 2019-07-04 14:43:05 檢舉
謝謝建議,我將code貼上來了。
clcy iT邦新手 3 級 ‧ 2019-07-15 10:01:24 檢舉
謝謝各位的建議,小弟後來決定去挖同步的Log檔作文字解析。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
Darwin Watterson
iT邦好手 1 級 ‧ 2019-07-04 11:09:16
最佳解答

試試看用 Files物件來處理資料夾的剖析 ! File 這個物件真的太舊了 !

附上六個 Files 的案例供參考 :

Java 8 List All Files In Directory – Six Examples

clcy iT邦新手 3 級 ‧ 2019-07-04 14:43:31 檢舉

好的,我來看看,謝謝你。

我要發表回答

立即登入回答