問題タブ [system.io.compression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - System.IO.Compression および ZipFile - 抽出および上書き
ファイルの抽出と圧縮に標準の VB.NET ライブラリを使用しています。それも同様に機能しますが、抽出する必要があり、ファイルが既に存在する場合に問題が発生します。
私が使用するコード
輸入品:
クラッシュ時に呼び出すメソッド
archivedir と BaseDir も設定されています。実際には、上書きするファイルがない場合に機能します。問題はまさにそこにあるときに起こります。
サードパーティ ライブラリを使用せずに抽出でファイルを上書きするにはどうすればよいですか?
(参照 System.IO.Compression および System.IO.Compression.Filesystem として使用していることに注意してください)
ファイルはすでに存在するファイルを持つ複数のフォルダーにあるため、手動は避けます
c# - Base64 でエンコードされた GZipStream がウィンドウと一致しない
次の csv ファイルがあります: https://dl.dropboxusercontent.com/u/8518063/ShareX/2016/03/simple.csv
Windowsエクスプローラーを使用して「圧縮zipフォルダーに送信」し、このファイルを取得します:https://dl.dropboxusercontent.com/u/8518063/ShareX/2016/03/simple.zip
http://www.motobit.com/util/base64-decoder-encoder.aspを使用して zip フォルダーをアップロードし、base64 でエンコードされた次の文字列を取得します。UEsDBBQAAAAIAMB5fEhJO+GGVQAAAIoAAAAKAAAAc2ltcGxlLmNzdk3KOwqAMBRE0V5wJzHk/ZPl
CIoIQZu4f/Ms1FsMU5x6HtvermUNdW7PGYcJAGIBoISoVrxAFMkQWRVy6pn9nHFhcCavMyBxp/o5
xiw5uePXlb7uRG9QSwECFAAUAAAACADAeXxISTvhhlUAAACKAAAACgAAAAAAAAABACAAAAAAAAAA
c2ltcGxlLmNzdlBLBQYAAAAAAQABADgAAAB9AAAAAAA=
C# を使用して base64string を再現できません。私の試み:
ここでオンラインで実行可能: http://csharppad.com/gist/e5d92798cb4a9c7887d6
戻り値H4sIAAAAAAAEAEXKOwqAMBBF0d61xJD5Z5YjKCIEbeL+dSziLR6vOO0696Pf65ba0r8zzQCQHYAKoppHiSiTIbIq1PJm9jNjZwglgxmQBFMdjLFKLcF4MH83mOgD8gxr24cAAAA=
c# - System.IO.Compression を使用した Excel zip パッケージ
Office Open XML に基づいて Excel ファイル (xlsx) を作成しています。これは私のコードがどのように見えるかです。
すべてのディレクトリを作成し、必要なすべてのメタデータを書き込みます。問題は、System.IO.Compression の ZipFile を使用して作成したディレクトリ (excelDirectory) を圧縮すると、ファイルが破損することですが、Arhive Manager または 7Zip を使用してディレクトリを圧縮すると、ファイルは正常になります。何が問題になる可能性がありますか?
Linux Mint を使用しています。モノデベロップ。単核症。
asp.net-mvc - System.IO.Compression によって Zip ファイルが作成されない
System.IO.Compression アセンブリは、.txt、.bak などの特定のファイルの zip ファイルを作成できますか、それとも単純にディレクトリの zip ファイルを作成できますか? 特定のファイルのzipファイルを作成できませんが、ディレクトリのzipファイルのみが作成されます
c# - 既存の .zip ファイルへのディレクトリの追加
まず第一に、これに対する解決策を探してみましたが、解凍してフォルダーを追加してから再度圧縮する必要のない解決策が見つかりませんでした。私はサードパーティのライブラリを使用していません。可能であればsystem.io.compressionを使用してこれを行いたいです...そうでない場合は、最後の手段としてdotnetzipを使用します。
TL;DR。ファイルを含むディレクトリを、作成済みの zip ファイルに追加できるようにしたいと考えています。System.Io.Compression
これはライブラリを使用して可能ですか?
編集:
したがって、このコードを使用して内部にフォルダーを作成できますが、その中にファイルはありません。私の質問は、このコードをもう一度実行して、すべてのファイルをソース フォルダーから zip 内のこのフォルダーに移動する必要があるか、それとももっと良い方法があるかということです。
c# - System.IO.Compression セントラル ディレクトリ レコードの末尾が見つかりませんでした
次のコードを実行すると..OpenRead
ステートメントで例外が発生します。
セントラル ディレクトリ レコードの最後が見つかりませんでした。
ただし、Windows エクスプローラーを使用して問題なく zip ファイルを開くことができます。
何かご意見は?
c# - System.IO.Compression および非同期 I/O からの ZipFile および ZipArchive クラス
.NET 4.5 では、zip アーカイブを操作する新しいクラスが追加されました。これで、次のようなことができます。
明らかに、大きなアーカイブを扱う場合、アーカイブからファイルを読み取るのに数秒または数分かかる場合があります。そのため、GUI アプリ (WinForms または WPF) を作成している場合、おそらくそのようなコードを別のスレッドで実行するでしょう。そうしないと、UI スレッドがブロックされ、アプリのユーザーが非常に動揺します。
ただし、このコードのすべての I/O 操作は、2016 年に「クールではない」と見なされるブロッキング モードで実行されます。したがって、2 つの質問があります。
- クラス (または他のサードパーティの .NET ライブラリ)で非同期 I/O を取得することは可能
System.IO.Compression
ですか? - それをするのは理にかなっていますか?とにかく、圧縮/抽出アルゴリズムは非常にCPUを消費するということです。
CPU バウンドI/O を非同期 I/O にブロックすると、パフォーマンスの向上は比較的小さくなります (もちろん、絶対値ではなくパーセンテージで)。
アップデート:
Peter Duniho からの回答に返信するには: はい、その通りです。何らかの理由で、私はこのオプションについて考えていませんでした:
これは間違いなく機能します。ありがとう!
ところで
意志まだCPU バウンドのブロッキング I/O 操作であり、別のスレッドのみであるI/O 操作中にスレッド プールからスレッドを消費します。
ただし、私が見ることができるように、.NET の開発者はまだいくつかのアーカイブ操作にブロッキング I/O を使用しています (たとえば、アーカイブ内のエントリを列挙するこのコードのように: dotnet@githubの ZipArchive.cs )。また、ZipFile API の非同期 APIの欠如に関する未解決の問題も発見しました。
現時点では部分的な非同期サポートがあると思いますが、完全には程遠いです。
c# - System.IO.Compression で作成した後の zip ファイルが無効です
1 つ以上のファイルを含む zip ファイルを作成しようとしています。
私は .NET Framework 4.5、より具体的には System.IO.Compression 名前空間を使用しています。
目的は、ユーザーが ASP.NET MVC アプリケーションを介して zip ファイルをダウンロードできるようにすることです。
zip ファイルが生成されてクライアントに送信されますが、ダブルクリックして開こうとすると、次のエラーが表示されます:
Windows はフォルダーを開けません。圧縮 (zip 形式) フォルダー ... は無効です。
これが私のコードです:
ダブルクリックしたときにzipファイルが無効であるとWindowsが言っているのはなぜですか。
最終的な考慮事項として、7-Zip を使用して開くことができます。