博客园 - henrylgz - 开发文件操作记录软件的设想,督促一下自己,欢迎指正建议。

来源:百度文库 编辑:神马文学网 时间:2024/05/04 12:03:46
开发文件操作记录软件的设想,督促一下自己,欢迎指正建议。
在做项目的时候发现一个问题:我们这个项目比较老,有300多个文件组成,经常改动的有40个左右。添加一个新功能的时候,有的时候会涉及到很多文件。经常会忘记了在什么地方修改代码,增加注释标志的时候又会打断思路,而且又麻烦。于是有了做一个文件操作记录软件的设想。
构想是这样的:监控一个文件夹下的制定类型的文件。如果有文件的创建,修改等则记录下来。对于创建文件,记录创建的文件名和时间;对于修改文件,对比修改前的文件,记录修改的部分,并加入注释标志修改。
我给这个软件其名字叫:Remember,就是希望它能记住文件的修改。使用C#,VS2005开发。
整个软件有两个技术点,一是监控文件,二是文件的比较。
当我感觉监控文件不好做的时候,很高兴地发现了FileSystemWatcher这个类,在它的例子里,很容易就把监控部分弄好了。不过由于它的监控底层一些,所以一个文件修改后保存时,会报两次修改,只好作个判断,只记录一次。但是目前会有些问题,有的时候会出错,现在考虑是不是要用多线程什么的来捕获修改。以前只用VC写过多线程的,C#刚学,还不了解呢。
接下来就是文件比较,我的设想是不需要太复杂的,完美的文件比较。只需要能比较出增加,删除,修改行就可以。目前的想法是逐行比较,碰到不一致的,就分兵三路:1。文件A取下一行和文件B当前行比较,不同的话继续下一行;2。文件B取下一行和文件A比较,不同的话继续下一行;3。文件A,B同时取下一行比较。直到有相同的行,到达相同的行,则当前行置为相同的行,继续比较。支路1表明文件B相对文件A是删除动作,支路2表明文件文件B对应文件A有增加动作,支路3表明文件B对文件A有修改动作。第三支路下面则继续三个支路。
这样一想的话,感觉很复杂。这样两个各100行的文件,最坏的比较方法,要产生5050*2+100=10200次比较!感觉有点太笨了。还没找到更好的算法,欢迎提供这方面的建议和方法。谢谢。
posted on 2005-08-23 10:20追求卓越 阅读(755)评论(12)  编辑 收藏收藏至365Key