Ich verwende derzeit die SharpZip API, um meine ZIP-Dateieinträge zu bearbeiten. Es funktioniert wunderbar zum Zippen und Entpacken. Obwohl ich Probleme habe festzustellen, ob eine Datei eine Zip ist oder nicht. Ich muss wissen, ob es einen Weg gibt zu erkennen, ob ein Dateistrom dekomprimiert werden kann. Ursprünglich verwendete ichC# .net ZIP-Datei identifizieren
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)
{
Der LZipStreamTester wird jedes Mal null und die If-Anweisung schlägt fehl. Ich habe es mit/ohne Puffer versucht. Kann jemand irgendeinen Einblick geben, warum? Ich bin mir bewusst, dass ich nach Dateierweiterung suchen kann. Ich brauche etwas, das definitiver ist. Ich bin mir auch bewusst, dass Zip eine magische # (PK etwas) hat, aber es ist keine Garantie, dass es immer da sein wird, weil es keine Anforderung des Formats ist.
Auch lese ich über .net 4.5 mit nativem zip Unterstützung so mein Projekt, dass anstelle von sharpzip wandern kann, aber ich brauche noch nicht hier gesehen habe, ein Verfahren/param ähnlich wie CanDecompressEntry: http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29
Meinen letzten Ausweg wird es sein, einen try-catch zu verwenden und ein entpacken der Datei zu versuchen.
Die einfachste Form meiner Frage ist "In dem obigen Code, warum tut die if-Anweisung false zurück?" –