查找大文件工具,顧名思義就可以知道該軟件的功能。在磁盤空間緊張,需要移除不需要的文件,但不知道要刪除多少個文件才能騰出足夠的空間。有時,刪除了一堆的小文件,還是不夠。此資源包容一個VS2012項目FindAllHudgeFiles源碼,在bin文件夾下可以得到可運行的exe文件。本程序使用C#和WPF開發,用途為查找指定文件夾下的大文件。
這一工具雖小,但用到的技術可不少。由於充分地應用了現成的技術與組件,比如DataGrid本身就己經有很強大的功能,使得整個程序代碼量不大,界麵友好性也不錯。如果采用Java開發,工作量要大不少,最關鍵的是Java桌麵應用性能夠嗆;如果用C++開發非托管版本,問題是開發效率太低,即使這樣一個小程序,恐怕也得花不少時間(可能得一星期)才能實現C#版本的所有功能,不過C++版本會擁有一個好處,所有Windows下均可運行,並不需要安裝.NET。
與其刪除一堆的“小文件”,不如隻關注“大文件”。為此,可以寫一個小工具,搜索指定文件夾下的所有大於指定大小的文件。
技術選型:
本程序采用WPF開發,基於.NET 4.0。項目格式:Visual Studio 2012,開發語言:C#,如果使用Visual studio 2010,請自行創建一個WPF項目,將源碼移入即可編譯。
安裝了.NET Framework 4.0的Windows計算機。在Windows 7 64位旗艦版下測試通過。
界麵設計:
按照人們在找到文件後最需要的功能,設計程序界麵如下:
中間的文件列表采用DataGrid控件,其它的都是簡單的WPF控件,總體布局使用DockPanel,支持界麵大小的動態調整。
(1)搜索功能采用.NET 4.0所提供的PLINQ完成,使用線程統一取消模型取消操作。
(2)由於搜索是在獨立的線程中完成的,因此,更新界麵的工作用到了Dispatcher對象,將UI更新代碼推送到UI線程中執行。
(3)在查找文件過程中,部分係統文件夾會因權限問題而無法讀取文件,故需妥善處理UnauthorizedAccessException異常。
(4)找到文件後,需要將文件名顯示在列表中,為此設計了一個FoundFile類封裝這些信息。顯示工作利用了WPF強大的數據綁定機製。因此讓FoundFile類實現INotifyPropertyChanged接口,並且將FoundFile對象放到ObservableCollection泛型集合中,綁定到DataGrid。這裏需要指出的是,發現WPF數據綁定支持跨線程更新DataGrid,從而大大地減少了代碼編寫量。
(5)找到的文件大小是字節,為此,編寫一個NumberConverter類,將其轉換為常見的K,M、G等,設計WPF數據綁定機製使用它來進行數值轉換(詳看DataGrid的綁定表達式)
70KB / 03-27
係統其他
下載21.5M / 02-01
遊戲補丁
下載231KB / 09-26
係統優化
下載76.4M / 03-25
55M / 06-05
237.9M / 04-13
140.5M / 03-06
900.9M / 03-02
96.2M / 07-06
311.2M / 07-06
335M / 07-06
200M / 07-06
413.8M / 07-06
353.9M / 06-05
131.8M / 04-13
230.8M / 03-03
195.6M / 03-03
165.4M / 03-03
45.6M / 09-08
665.2M / 07-06
2.84G / 07-06
93M / 07-06
338.3M / 07-06
1.38G / 07-26
488.3M / 07-16
109.8M / 06-03
142M / 01-08
1.2M / 11-23
548.8M / 04-13
1.6M / 04-13
1.48G / 03-18
646.6M / 03-03
133.7M / 03-03
325.8M / 06-07
60M / 04-29
254M / 04-25
659M / 04-23
1M / 12-26
253.4M / 12-08
253M / 12-08
1.19G / 11-16
110.5M / 04-23
26.7M / 03-16
488.3M / 07-16
248.9M / 12-08
248.9M / 12-08
201.2M / 04-13
100.6M / 03-06
148.9M / 03-06
1.12G / 07-06
1.25G / 07-06
9.48G / 07-06
50KB / 07-06
116.2M / 04-10
1.92G / 04-17
201.5M / 04-13
7.31G / 07-01
94.3M / 07-06
2.48G / 07-06
7.63G / 07-06
1M / 07-06
778.1M / 07-06
509.7M / 07-06
561.8M / 07-11
1.32G / 01-19
72M / 07-06
548.7M / 07-06
1.00G / 07-06
9.13G / 07-06
126.2M / 07-06
72M / 07-06
105.1M / 07-06
132M / 07-06