現在、SharpZipAPIを使用して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は毎回nullになり、ifステートメントは失敗します。バッファあり/なしで試してみました。誰かがその理由について何か洞察を与えることができますか?ファイル拡張子を確認できることは承知しています。それよりも決定的なものが必要です。zipには魔法の#(PK何か)があることも知っていますが、フォーマットの要件ではないため、常にそこにあるという保証はありません。
また、ネイティブzipをサポートする.net 4.5について読んだので、プロジェクトはsharpzipではなくそれに移行する可能性がありますが、CanDecompressEntryに似たメソッド/パラメーターはここに表示されませんでした:http://msdn.microsoft.com/en- us / library / 3z72378a%28v = vs.110%29
私の最後の手段は、try catchを使用して、ファイルの解凍を試みることです。