C #.net идентифицирует zip-файл

В настоящее время я использую API SharpZip для обработки записей в zip-файле. Он отлично работает для застегивания и распаковки. Однако у меня возникают проблемы с определением, является ли файл zip или нет. Мне нужно знать, есть ли способ определить, можно ли распаковать файловый поток. Первоначально я использовал

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 каждый раз становится нулевым, и оператор if терпит неудачу. Пробовал с/без буфера. Может ли кто-нибудь дать представление о том, почему? Я знаю, что могу проверить расширение файла. Мне нужно что-то более определенное, чем это. Я также знаю, что у zip есть волшебное #(PK нечто ), но это не гарантия того, что оно всегда будет там, потому что это не требование формата.

Также я читал о том, что.net 4.5 имеет встроенную поддержку zip, поэтому мой проект может перейти на это вместо SharpZip, но мне все еще не нужно видеть метод/параметр, подобный CanDecompressEntry здесь:http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29

Моим последним средством будет использование try catch и попытка разархивировать файл.

15
задан Sean Dunford 16 August 2012 в 22:50
поделиться