金旭亮軟件工具系列之WPF開發“查找大文件”工具

“軟件工具開發系列”之

 

           WPF開發“查找大文件”工具


說明

        出於各種原因和目的,我先後寫了一些實用小程序,打算有時間的話將它們公佈出來,一是希望這些小工具能確實能解決一些人的實際問題,二是給我的許多學生和軟件開發愛好者一些“看得到”的實例以供借鑑。我儘量隨文章一起發佈示例源碼,但由於種種現實原因,有些程序可能只提供安裝程序或可運行版本,有些程序則只能通過文章展示界面截圖、開發思路和技術要點,程序本身不公開發布。

      凡提供源碼的,大家可以自由地修改與使用。

      這是本系列的第一篇,希望大家能喜歡這個小工具。

                 

                                                                     金旭亮

                                                                   2012.8.22

======================================================================

場景

         磁盤空間緊張,需要移除不需要的文件,但我不知道要刪除多少個文件才能騰出足夠的空間。有時,刪除了一堆的小文件,還是不夠。

解決方案

       與其刪除一堆的“小文件”,不如只關注“大文件”。爲此,可以寫一個小工具,搜索指定文件夾下的所有大於指定大小的文件。

技術選型:

      本程序採用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的綁定表達式)

小結:

        這一工具雖小,但用到的技術可不少。由於充分地應用了現成的技術與組件,比如DataGrid本身就己經有很強大的功能,使得整個程序代碼量不大,界面友好性也不錯。如果採用Java開發,工作量要大不少,最關鍵的是Java桌面應用性能夠嗆;如果用C++開發非託管版本,問題是開發效率太低,即使這樣一個小程序,恐怕也得花不少時間(可能得一星期)才能實現C#版本的所有功能,不過C++版本會擁有一個好處,所有Windows下均可運行,並不需要安裝.NET。

       想了解本程序中用到的PLINQ技術可參考本人拙著《.NET 4.0面向對象編程漫談》之《應用篇》。

      

請訪問CSDN下載頻道獲取項目源碼及exe文件:

       點擊此鏈接下載WPF開發“查找大文件”工具FindAllHudgeFiles源碼




發佈了247 篇原創文章 · 獲贊 62 · 訪問量 252萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章