我目前正在使用SharpZip API来处理我的zip文件条目。它非常适用于压缩和解压缩。但是,我无法确定一个文件是否为zip文件。我需要知道是否有一种方法可以检测文件流是否可以被解压缩。最初我使用了
LZipStreamTester每次都会变成null,导致if语句失败。我试过使用/不使用缓冲区。有人能解释一下为什么吗?我知道我可以检查文件扩展名。但我需要比那更明确的方法。我也知道zip有一个魔数#(PK something),但这并不能保证它总是存在,因为这不是格式的要求。
此外,我读到.net 4.5具有本地zip支持,因此我的项目可能会迁移到那里,而不是sharpzip,但我仍然没有看到类似于CanDecompressEntry的方法/参数:http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29 我最后的选择将是使用try catch并尝试对文件进行解压缩。
FileStream lFileStreamIn = File.OpenRead(mSourceFile);
lZipFile = new ZipFile(lFileStreamIn);
ZipInputStream lZipStreamTester = new ZipInputStream(lFileStreamIn, mBufferSize);// not working
lZipStreamTester.Read(lBuffer, 0, 0);
if (lZipStreamTester.CanDecompressEntry)
{
LZipStreamTester每次都会变成null,导致if语句失败。我试过使用/不使用缓冲区。有人能解释一下为什么吗?我知道我可以检查文件扩展名。但我需要比那更明确的方法。我也知道zip有一个魔数#(PK something),但这并不能保证它总是存在,因为这不是格式的要求。
此外,我读到.net 4.5具有本地zip支持,因此我的项目可能会迁移到那里,而不是sharpzip,但我仍然没有看到类似于CanDecompressEntry的方法/参数:http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29 我最后的选择将是使用try catch并尝试对文件进行解压缩。