0

重複の可能性:
サードパーティ API を使用せずに C# でファイルを ZIP するにはどうすればよいですか?

2 つのファイルを作成するアプリケーションがあります。1 つは txt で、もう 1 つは画像ファイルです。それらをまとめて圧縮し、コンピュータのデフォルトの電子メール設定を使用して送信したいと考えています。リンク方法へのメールを使用しているため、それらを圧縮する必要がある理由。コードは次のとおりです。

public static void Main()
{
    SendMailWithMailTo(
        "dvader@deathstar.mil",
        "Rebel Base Detected",
        "Hoth, baybee!!",
        "\"C:\\Users\\Fett\\RebelBase[1].png\""); 
}

そのため、添付できるファイルは 1 つだけです。だから私はジッパーが良い考えかもしれないと思いましたか?また、.NET 4.0 を使用しています。.NET 4.5 には組み込みのアセンブリがいくつかあると思いますが、私のアプリケーション要件は .NET 4.o です。また、外部ツールはなるべく使いたくないです。

4

3 に答える 3

3

Png はすでに圧縮されているため、再度圧縮してもあまりメリットはありません。System.Net.Mail.Attachmentを単純に使用しないのはなぜですか 。私が提供したリンクでそれを行う方法の良い例があります

于 2012-09-11T15:22:17.363 に答える
2

.NET 4.5 には、ZipArchive複数のファイルを簡単に圧縮できる新しいクラスが含まれています。

この MSDN エントリには、いくつかの例があります。

しかし、既に述べたように、一部の一般的な画像形式は既に圧縮されており、テキスト ファイルのサイズが平凡であると仮定すると、あまり節約できない可能性があります。

4.0に固執している場合、重複した質問の提案ZipPackageは、zipアーカイブを作成するための1つのオプションです(ただし、サポートする形式には注意事項があるようです)。

.NET の圧縮ストリームは、zip クライアントで解凍できるファイルを作成しますが、複数ファイルのアーカイブの作成をネイティブにサポートしていないため、ZipPackageうまくいかない場合の答えは次のとおりだと思います。サードパーティのライブラリが必要になるか、zip 標準の独自の実装を作成する必要があります。

私には、圧縮を気にせずにファイルを直接電子メールに追加するのが最も簡単なように思えますが、これは、平均ファイルサイズや圧縮による利点を知らずに提案するものです.

于 2012-09-11T15:27:49.610 に答える
1

オペレーティング システムにデフォルトのメール クライアントを起動させて、ユーザーがメールを作成できるようにしようとしている場合 (これが目的であるように見えます)、MapiMailMessage代わりに使用することを検討する必要があります。詳しく書いた記事はこちらです。

これはサード パーティのライブラリです。Windows API の操作は簡単ではないため、かなりの量のコードが含まれますが、オープン ソースのサード パーティ ライブラリには何も問題がないことを認識しておいてください。実際、ここにすべてのソース コードその使用例が記載された記事があります。

なぜ私はこれをお勧めしますか? 複数の添付ファイルをネイティブにサポートしているため、それらを圧縮することを心配する必要はありません (特に、別の寄稿者が既にここで述べているように、すでに非常に圧縮されている PNG ファイルの場合)。

于 2012-09-11T15:55:25.090 に答える