标签:
这两天实现了在vs下遍历指定目录的所有文件,求出对应的hash码,最后封装成动态库。
首先总结一下思想和用到的主要函数:
1.用FindFirstFile函数可以开始寻找第一得到的文件,并返回一个句柄用来做FindNextFile输入,将文件信息存入fileinfo结构中;
2.利用fileinfo中dwFileAttributes的值判断得到的文件是文件还是目录,如果是目录则进入子目录遍历;如果是文件则调用基于名字的hash计算函数,得到对应的hash码,调用CreateFile得到文件的句柄用来调用基于句柄(handle)的hash计算函数;
3.循环调用FindNextFile,寻找下一个文件;
4.将工程调试完毕,建立dll,当调用这个dll时,也需要将它调用的hash-dll同时复制到exe的运行目录中(一般在debug目录)。
其中要注意的几个点:
1.windows下面每一个文件夹中默认有.文件和..文件夹,处理时要把它过滤,否则会产生对应的hash失败;
2.在实现循环时要注意在恢复默认的路径,比如遍历“d:/outlook/log",开始继续下一步循环时要先还原成“d:/outlook/”再加下一个文件名;
3.FindNextFile产生的句柄与CreateFile产生的代表文件的句柄不同,只能用于FindNextFile做输入,最后要用findclose(handle)结束,而不是close(handle);
4.在引用目录时最后用“/"儿不是“\\”,比较通用;
5.在vs中很多unicode类型数据,需要与ASCII相互转换。
标签:
原文地址:http://www.cnblogs.com/singlebutterfly/p/4584295.html