用Java仿一個低配版的Everything軟件
用Java仿一個低配版的Everything軟件
“Everything” 是 Windows 上一款搜索引擎,它能夠基于文件名快速定文件和文件夾位置。
不像 Windows 內置搜索,“Everything” 默認顯示電腦上每個文件和文件夾 (就如其名 “Everything”)。
您在搜索框輸入的關鍵詞將會篩選顯示的文件和文件夾。
總的來說,Everything是一款免費的可以快速檢索文件、文件夾的,并且占用資源比較少的Windows應用軟件。
我們今天就使用Java來制作一個低配版"Everything"吧!
先上主函數:
public static void main(String[] args) { System.out.println("*********************"); System.out.println("Welcome To Everything"); System.out.println("*********************"); System.out.println("請輸入要查找的文件名:"); String fileName=scanner.next(); System.out.println("文件名稱\t文件路徑\t文件大小\t文件最后修改時間"); File[] Drive_letters=File.listRoots(); for(File dl:Drive_letters) { find(dl,fileName); } }
這里暫時不使用圖形化界面,先是命令行界面,最開始簡單輸出提示語。
然后輸入要查找的文件名或者文件夾名,然后因為Everything是只能在Windows下運行,所以我們只考慮Windows環(huán)境下查找文件。(竊喜~)
而Windows的文件系統(tǒng)可能有多個根目錄,所以我們用到File.listRoots(),下面來介紹一下File.listRoots()。
Java 支持零個或多個文件系統(tǒng)。 而每個文件系統(tǒng)都有一個 {@code root} 目錄,從中可以訪問該文件系統(tǒng)中的所有其他文件。 例如,Windows 平臺為每個活動驅動器都有一個根目錄; UNIX 平臺有一個根目錄,即 {@code “/”}。 可用文件系統(tǒng)根集會受到各種系統(tǒng)級操作的影響,例如可移動媒體的插入或彈出以及物理或虛擬磁盤驅動器的斷開或卸載。
此方法返回一個 {@code File} 的對象數組,這些對象表示可用文件系統(tǒng)的根目錄。 可以保證本地機器上物理存在的任何文件的規(guī)范的路徑名都可以以該方法返回的其中一個根(例如Windows平臺下的C、D、E)開始。
使用File.listRoots()就可以得到電腦的文件系統(tǒng)的各個根目錄,然后分別在各個根目錄尋找我們要找的文件。
下面看一看我們寫的查找文件的函數。
public static void find(File file, String fileName) { if (null != file) { if (file.isDirectory()) { File[] files = file.listFiles(); if (null != files && files.length > 0) { for (File f : files) { find(f, fileName); } } } else { String fName = file.getName(); if (fName.contains(fileName)) { String fileResultName = file.getName(); String fileResultPath = file.getAbsolutePath(); long fileResultSize = file.length(); long fileResultModify = file.lastModified(); System.out.println(fileResultName + "\t" + fileResultPath + "\t" + fileResultSize + "\t" + fileResultModify); } } } }
先是判斷文件或文件夾是否為空,這些文件或文件夾可能是隱藏的或者是被保護的。
然后判斷這個file是否是文件夾,如果是文件夾,就使用file.listFiles()獲取里面所有文件,得到一個文件類型數組。
然后判斷文件夾是否為空,如果為空,則不進去。如果不為空,遍歷文件類型數組,然后每次都使用遞歸繼續(xù)查找。
如果這個file不是文件夾,就不需要遞歸了。
我們比對這個文件的文件名是否與要查找的一致,如果一致就打印文件或文件夾的文件名\文件夾名、絕對路徑、文件\文件夾大小和最后修改時間。
The End…
See you~
Java Windows
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。