CDirItem di;
NFile::NFind::CFileInfoW fi;
if (!fi.Find(name))
{
PrintString(UString(L"Can't find file") + name);
return 1;
}
di.Attrib = fi.Attrib;
di.Size = fi.Size;
di.CTime = fi.CTime;
di.ATime = fi.ATime;
di.MTime = fi.MTime;
di.Name = name;
di.FullPath = name;
COutFileStream *outFileStreamSpec = new COutFileStream;
CMyComPtr<IOutStream> outFileStream = outFileStreamSpec;
if (!outFileStreamSpec->Create(archiveName, false)) //创建后缀为.7z的压缩文件,
{
PrintError("can't create archive file");
return 1;
}
UString name = L"Debug\\123.txt"; //这是待压缩的文件 这个文件是当前目前下面的一个Debug文件夹下的txt文件
//只有这样写,压缩后的文件*.7z中才会只有Debug这个目录
//如果UString name = L"D:\\Debug\\123.txt"; 是个绝对路径,那么*.7z中也是一个绝对路径的。
//一般的压缩软件,比如360压缩,对一个文件夹进行压缩后,*.zip压缩包中只有这个被压碎的文件夹,而不是一个据对路径。即符合第一种情况,相对路径的情况。
NFile::NFind::CFileInfoW fi;
if (!fi.Find(name))
{
PrintString(UString(L"Can't find file") + name);
return 1;
}
di.Attrib = fi.Attrib;
di.Size = fi.Size;
di.CTime = fi.CTime;
di.ATime = fi.ATime;
di.MTime = fi.MTime;
di.Name = name;
di.FullPath = name;
dirItems.Add(di);//也就是说,此处你添加到dirItems中的di的name属性的值如果是据对路径,那么*.zip中的就是绝对路径。
如果添加的name是相对路径,那么*.zip中的就是相对路径。大多数应该是相对路径。
}COutFileStream *outFileStreamSpec = new COutFileStream;
CMyComPtr<IOutStream> outFileStream = outFileStreamSpec;
if (!outFileStreamSpec->Create(archiveName, false)) //创建后缀为.7z的压缩文件,
{
PrintError("can't create archive file");
return 1;
}