私は現在、SharpZip APIを使用してZIPファイルエントリを処理しています。それはジッパーと解凍のために素晴らしい作品です。しかし、ファイルがジップであるかどうかを特定するのは難しいです。ファイルストリームを解凍できるかどうかを検出する方法があるかどうかを知る必要があります。もともと私は使用しましたC#.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には魔法の#があることも知っていますが、それはフォーマットの要件ではないため、常にそこに存在するという保証はありません。
も、私は私のプロジェクトではなくsharpzipのものに移行するかもしれませんが、私はまだここCanDecompressEntryと同様の方法/ PARAM表示されませんでした必要なので、4.5がネイティブのzipサポートを持つ.NETについて読む:http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29
私の最後の手段try catchを使用してファイルを解凍しようとします。
私の質問の最も単純な形式は、これは「上記のコードでは、なぜif文がfalseを返すのですか?」 –