8

Ionic zipを使用すると、既存のファイルをzipオブジェクトに追加して、zipファイルを作成できます。しかし、作成したzipファイルからそれらのbyte []を読み取ってサーバーに送信していることを考えると、サーバーにzipを保存するには、そのbyte[]からzipファイルを再度作成する必要があります。どうすればこれを達成できますか?

私はC#を使用しています。

4

2 に答える 2

22

私があなたの質問を正しく理解しているなら、あなたbyte[]はネットワークを介してあなたのデータ配列を取得し、そのデータをzipファイルに保存したいですか?あなたはあなたが得たものからあなたが作成したものZipEntryから新しいものを作成することができます(ドキュメントに示されているように):MemoryStreambyte[]

byte[] data = MethodThatReceivesYourDataOverTheNet();
using (MemoryStream stream = new MemoryStream(data))
{
    using (ZipFile zip = new ZipFile())
    {
        zip.AddEntry("name_of_the_file_in_the_arhive.bin", "base", stream);
        zip.Save("example.zip");
    }
}
于 2012-03-24T22:34:40.240 に答える
10

あなたが何をしているのかはあなたの質問からは本当に明確ではありません-しかし、ディスクに保存してからデータを取得するためにリロードすることを避けようとしている場合は、:に保存してMemoryStreamください

byte[] data;
using (MemoryStream ms = new MemoryStream())
{
    zipFile.Save(ms);
    data = ms.ToArray();
}
// Do whatever with data.

MemoryStream.GetBuffer()または、別のコピーを作成しないようにするために使用します。

byte[] buffer;
int length;
using (MemoryStream ms = new MemoryStream())
{
    zipFile.Save(ms);
    buffer = ms.ToArray();
    length = ms.Length;
}

// Now use buffer, but only up to "length"...
于 2012-03-24T21:21:06.630 に答える