tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: 解凍せずにZIPファイルへフォルダを追加する方法
投稿日: 2016/08/07(Sun) 10:44
投稿者Kobaちゃん
> > Aフォルダを圧縮してX.zipを作成。 次に、Bフォルダが生成されたら、X.zipを解凍して復元したAフォルダのルートに、Bフォルダを作成して、この直下にBフォルダのファイルをAddFileで追加して.... 
> > ただ、この手順では、フォルダが100本(ファイルは総数は概ね1万本)近くあると、100本目のフォルダを結合して最終のX.zipを完成させるのに時間がかかります。 解凍することなく書庫ファイルにフォルダを追加するか、zipファイル同士をマージさせ、処理時間を短縮したい。
>
> 「解凍して」というのがよく分かりません。
> 私が書いた手順には、アーカイブファイル内の各エントリの「解凍」処理は含まれません。
> 実際、DotNetZipおよび(.NET 4.5以降専用の)System.IO.Compression.ZipArchiveで確認しましたが、1MBのファイル100個を追加する処理において、アーカイブ内にエントリが存在していないケースと10000個程度存在しているケースで最大1.3倍程度の差しか出ませんでした。

時間まで調査して頂きありがとうございました。 例が不正確でした。 依頼元の話では場合に
よっては最終X.zipを解凍するのに約5分かかるようですので、かなりのフォルダ数とファイル数
が書庫には入っていると思います。
依頼元の実態を正確に把握していませんでした m(_ _)m これは別の意味で問題ですが(^_^;)

本題に戻りますが

'ZipFileオブジェクトを使って
Dim zf As New ICSharpCode.SharpZipLib.Zip.ZipFile(f) f:ファイルのフルパス
zf.Add(f,エントリパス名)
第2引数でエントリ名を指定しするとできそうです。現在、試しいるところです。

結果がでましたら、投稿する予定です。

BフォルダにあるファイルはBフォルダ直下でなく、....B\bb\b下にあるためこのフォルダ構造を保って
追加したいためZIPファイルにBフォルダを追加という投稿にしました。解凍後は「B\bb\b\ファイル名」
を期待していました。
単純に第1引数にフォルダ名を入れただけでは、解凍後のフォルダ構造が「....B\bb\b\ファイル名」と
なり期待通りでなかったのですが、addメソッドの第2引数でエントリ名(B\bb\b\ファイル名)を指定
するとうまくいきそうです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。