金旭亮软件工具系列之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源码




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值