这几天公司领导叫我开发一个自动备份系统以满足公司服务器自动备份和VSS与FTP的同步。
今天下午 自动备份系统的备份功能基本上已经完成了 ,谈一下我对这个系统的认识,说的不对的地方还请高手指教。
首先 我完成了公司的基础库建设
定义了一个 FileSystemInfo抽象类 继承自 System.IO.FileSystemInfo抽象类
然后我定义了一个FileInfo类 这个类实现我定义的FileSystemInfo类。
为什么我要定义这个类而不用.net 自带的FileInfo类呢? 其主要的原因是因为FileInfo只提供了部分windows文件接口 而我需要获取更多的信息, 比如 Icon 。
这个类定义好以后 我就在里面定义了一个LargeIcon 和 一个SmallIcon属性,他们分别获取文件的大图标和小图标
另外定义了一个ShellFolders类 这个类主要用于获取系统的特殊文件夹路经 主要是为了做目录导航初始化。
有了FileInfo 和 ShellFolders 两个类 咱们获取文件和目录相关信息基本上不存在什么问题 如果说还要获取更多的信息的话 就在FileInfo里面去写了 如果重点是获取 目录的信息的话 那么可以建立一个DirectoryInfo类,
好了,咱们得开始想一下这个自动备份兼压缩数据的方法了
同事胡哥提醒了我 可以用Process 然后我做了如下的设计
先定义IFileplanprovider 接口 方法:BackUp() 然后定义了 BaseFileplanprovider 类实现此接口
然后定义了ICompress接口 方法:Compress() 然后定义RarCompress 实现此接口
定义好这4个文件以后 分别在实现类里面定义其 Instance属性 [static]
在BaseFileplanprovider 里面 定义一个ICompress 成员变量
在初始化的时候就可以写 _icom = RarCompress.Instance;
然后就可以调用压缩方法
然后 我们留给 winform的 ui层的接口就是 IFileplanprovider.BackUp() 这样子的 具体的实现 希望大家还是多想想
在winform-ui里面我定义了一个DirecotyComboBox(自定义控件,具体文件变化和绘制事件封装) 下拉菜单 一个按钮 他们组成了一个DirectoryPanel 在其中定义了一个委托
这就成为了一个外部调用接口 具体业务封装掉
这个Panel 里面具体的实现就是 初始化下拉菜单为ShellFolders 中具体的一个路经 这个可以自己选择其选中项变化事件
这个按钮嘛就是让选择一个路经 当按钮路径变化的时候,如果下拉菜单中没有此项则添加此项,然后的选中项也变成此项 这个变化是封装成一个方法。
当变化完成以后就会执行委托,将这个变化信息传递出来
这个委托的事件参数 我自己定义了一个FileEventArgs : EventArgs
里面定义了一个FileInfo 成员变量
然后初始化事件参数的时候就初始化这个FileInfo变量[初始化以文件的FullName作为参数传递]
定义个ListView 来查看选中文件夹的子项
具体的实现我相信 大家都应该知道 我就不多说了
这几天写一个windows 服务 来具体执行自动化操作 基本上此系统基础建设就宣告完成。
累了 就写到这里了 我的QQ:7437280 有兴趣的朋友可以加我QQ 大家一起交流交流