В настоящее время я использую SharpZip api для обработки записей в 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, но мне все еще не нужен метод /param, похожий на CanDecompressEntry здесь: http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29
Моим последним средством будет использование try catch и попытка распаковать файл.