如果你还对哈夫曼树压缩文件不熟悉的话,你可以看看这片博客:http://blog.csdn.net/fengasdfgh/article/details/53013371
我在上一篇博客讲述了如何利用哈夫曼树压缩文件,但是对于文件夹它确实是无力的,深究其因,是因为我们所使用的文件函数无法打开一个文件夹,我们也就无法遍历其根目录下的文件与文件夹。
这里我们就要用到了_findata_结构体,它定义在io.h中。
以下部分内容来自:http://qiaoxinwang.blog.163.com/blog/static/86096452010612139172/
//源代码,我只贴出了32位的,64位的类似
#define _finddata_t _finddata64i32_t
struct _finddata64i32_t
{
unsigned attrib;
time_t time_create;
time_t time_access;
time_t time_write;
_fsize_t size;
char name[_MAX_FNAME];
};
unsigned atrrib:文件属性的存储位置。它存储一个unsigned单元,用于表示文件的属性。文件属性是用位表示的,主要有以下一些:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、_A_SUBDIR(文件夹)、_A_SYSTEM(系统)。
#define _A_NORMAL 0x00 // Normal file - No read/write restrictions
#define _A_RDONLY 0x01 // Read only file
#define _A_HIDDEN 0x02 // Hidden file
#define _A_SYSTEM 0x04 // System file
#define _A_SUBDIR 0x10 // Subdirectory
#define _A_ARCH 0x20 // Archive file
这些都是在io.h中定义的宏,可以直接使用,他们是2的几次幂,从而保证只有一位为1,而其他位为0)。既然是位表示,那么当一个文件有多个属性时,它往往是通过位或的方式,来得到几个属性的综合。例如只读+隐藏+系统属性,应该为&