一个简单的文件分割合并器

         折腾了一天多的这个程序总算是完成了。这个软件其实实现起来很简单,在这个星期五用了几个小时我就完成了一个简单的版本了。但是感觉那个实现的太差劲了,就像我们组的老大所说的,很多人都喜欢把所有的逻辑实现放到UI界面中,这句话对我的触动很大,让我感觉突然有一点理解怎么去生成一个类的感觉,以前就是知道类的该概念,但是要我自己去设计,就不知道如何把一些逻辑和数据放到一个类中了,然后虽然用的是面向对象的工具,写的确实面向过程的程序。我以前的习惯也一直是把所有的逻辑放到UI中,就不知道提取出一个类来处理,汗啊,幸好经老大的点拨,在这里深表感激。然后我就昨晚做了一个改进,多写了几个逻辑处理类。

         一个是文件合并器的类,一个是文件分割器的类,在看了一个程序的多线程以后,我也做了一个双线程的实现文件分割的方法,因为现在一般都是两个CPU的电脑了,这个还是挺管用的,其实文件合并的功能也是可以用双线程去实现的,但是我就不去做的,有点无聊的费时间。我先这个软件只是因为在上传邮箱的时候总是因为文件大小的限制,弄的很郁闷,所以才有这个软件的。知道怎么去实现,能用就好了。文件分割与合并的实现其实是挺简单的,分割的时候只要打开文件,读取你要分割的一个文件的大小,将数据写入一个文件,一次这样做就可以了。合并则是依次读入多个文件的数据,然后把所有的数据写入的一个文件中就可以了。其他复杂的就是处理文件名,文件路径等小问题了,很简单,但容易弄错和忽略,我就是栽在这里的。弄得我从昨天晚上熬夜到5点多。 写这个程序中让我最有成就感的就是我想到了在分割器和合并器中处理进度时想到了委托把数据传出去,以在窗口中去处理当前进度条的值,然后我设计了一个接口,让它可以在多个类中去执行。原本这个接口是用类的,那样的话就要自己再去继承这个类,重写不同类的不同方法,后来我想到了完全可以在窗口中继承这个类,然后在这个窗口类中处理就可以了,这样也省去了这新继承的类中和窗口类中相互窗体进度条应用的麻烦。因为C#不支持多继承嘛,然后我就做了接口了,后来发现用接口更好,这正是应验了我读到的一篇文章说的,以后软件的发展是要面向接口了,虽然对高手来说这个也许没什么大不了的,呵呵,有可能还是一个不好的设计思想,这样的话希望高手给点指点,我在这里先谢过了。

         这个程序其他的就没什么好说的了,本来就比较简单。如果要看直接看程序就可以了。要用这个软件,要注意默认情况下这个软件是将分割后的文件在当前的目录下生成一个文件名加_Divided的后缀作为文件夹的名称,然后分割后的文件都会存储在这个文件夹中,并且在创建这个文件夹时要特别注意里面的东西是要被删除的,所以要保管好你的数据。在合并的时候也要注意合并的文件夹是要以_Divided做为后缀。文件名默认是去除这个后缀后的名字,不过这个可以你自己输入。然后生成的文件会放在和合并的文件夹在同一个目录下。

         好了,其他的就不说了,源代码如下(包括我先前的两个工程和一个网上下载的例子):文件分割合并器
有什么不足的,希望大家能给点指点。

posted @ 2008-09-21 15:49  江湖飘  阅读(731)  评论(2编辑  收藏  举报