問題タブ [zipinputstream]
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.
java - ZipInputStream から ByteArrayOutputStream への読み取り
から単一のファイルを読み取り、java.util.zip.ZipInputStream
それを にコピーしようとしていますjava.io.ByteArrayOutputStream
(その後、 を作成して、それjava.io.ByteArrayInputStream
をサードパーティのライブラリに渡して、ストリームを閉じてしまいます。ZipInputStream
閉じたくありません) .
ここにはおそらく基本的なものが欠けていますが、ここでは while ループに入ることはありません。
ストリームをコピーできるようにするために何が欠けていますか?
編集:
ZipInputStream
これはファイルからのものではないことを先に述べておくべきだったので、 ZipFile
. サーブレットを介してアップロードされたファイルからのものです。
また、このコード スニペットに到達する前にgetNextEntry()
、既に を呼び出しています。ZipInputStream
ファイルを別のファイルにInputStream
(OutputStream
上記の方法で)コピーしようとせずZipInputStream
、サード パーティのライブラリに渡すだけでは、ライブラリはストリームを閉じ、残りのファイルを処理するなど、それ以上何もできません。ストリーム。
ruby - Ruby の ZipInputStream が行末を台無しにするのはなぜですか?
ZipInputStream が、ファイルに保存されている行末で下品な自由を取っていることに満足しています。少なくとも、ファイルを保存しているプラットフォームに適しているのであれば。残念ながら、zip からテキスト ファイル (.txt、.cpp. など) を取り出すと、\n (0x0A) が \r\n (0x0d0a) に置き換えられます。大変ご迷惑をおかけいたしました。
行末を完全に変更しないようにするか、選択したものを使用するように設定できるフラグはありますか?
ありがとう。
(私は zip ファイル、その作成などを確認しました。他の zip ツールを使用して解凍し、適切にアーカイブされていることを確認しました。rdebug を使用してプロジェクトをステップ実行し、ZipInputStream 呼び出しが read であることを確認しました。 () は行末に \r\n を返します。)
java - byte[] から読み取ったときに ZipFile エントリのコンテンツを抽出する (Java)
コンテンツが byte[] として表示される zip ファイルがありますが、元のファイル オブジェクトにアクセスできません。それぞれのエントリーの内容を読みたい。バイトの ByteArrayInputStream から ZipInputStream を作成でき、エントリとその名前を読み取ることができます。ただし、各エントリの内容を抽出する簡単な方法がわかりません。
(私は Apache Commons を見てきましたが、簡単な方法もわかりません)。
更新@Richのコードは問題を解決しているようです、ありがとう
QUERY両方の例の乗数が * 4 (128/512 および 1024*4) であるのはなぜですか?
java - ZipInputStream を使用して文字列値を解凍しようとしているときに、IOException プッシュ バック バッファがいっぱいになる
文字列値を解凍しようとしています。
しかし、私は取得していjava.io.IOException: Push back buffer is full
ます:
例外スタック トレース:
java - ZipInputStream を使用して docx ファイルから document.xml を取得する
docx ファイルの inputStream があり、docx 内にある document.xml を取得する必要があります。
ZipInputStream を使用してストリームを読み取っていますが、コードは次のようなものです
ご覧のとおり、zipEntry.getName の出力は、ある時点で「word/document.xml」になります。この document.xml をストリームとして渡す必要があります。.getInputStream の呼び出しでこれを簡単に渡すことができる ZipFile メソッドとは異なり、この docXFile をどのように行うことができるのでしょうか?
前もってありがとう、ミーナクシ
@Update: このソリューションの出力を見つけました:
この出力ストリームを入力ストリームに変換するための基本的な API があるかどうか疑問に思っていますか?
scala - ZipInputStreams と ZipOutpuStreams を使用する場合、Scala で可変変数を回避するにはどうすればよいですか?
zip ファイルを読み取ろうとしており、必要なファイルがいくつかあることを確認してから、有効なすべてのファイルを別の zip ファイルに書き出そうとしています。java.util.zipの基本的な紹介には多くの Java 主義が含まれており、自分のコードをより Scala ネイティブにしたいと考えています。具体的には、 の使用は避けたいと思いますvars
。ここに私が持っているものがあります:
私は Scala 2.7.7 を使用していることを付け加えておきます。
java - 解凍後に zip ファイルを開く/ダウンロードする際の問題 (Java/ZipInputStream)
背景
現在、HTTP サーブレットを介して HTTP リクエストで zip ファイルを取得しようとしています。受信した zip ファイルには、3 つの異なるファイルが含まれています。これらのファイルにはフィルターで除外したい情報が含まれており、ソースからこれを行うことはオプションではありません (その方がはるかに優れていることはわかっていますが)。
ファイルが最初からビルドされているソースからファイル内の一部の情報を除外できないため、私の解決策は、ファイルを解凍し、これら 3 つのファイルを文字列として読み取ってからフィルター処理することです。最後に、すべてを「zipfile」(inputStream) として「再構築」し、inputStream を返します。
問題
現在、ファイルの解凍とフィルタリングを処理するクラスを作成しました。最後に、zip ファイルと 3 つのファイルを含む新しい inputStream を返したいだけです。
HTTPエンティティからコンテンツをinputStreamに取得し、このinputStreamを解凍して、3つのファイルを3つの文字列として取得するところまで来ました。これが機能するかどうかを確認するために、現在、それらを解凍してinputStreamを閉じて返すだけではやりたくありません。ただし、inputStreamを返すと例外が発生します。
これは、inputStream が以下に示す関数の外部で使用されるためです。zipInputStream を閉じると、おそらく、さらに作業を進めるために inputStream も閉じます。
現在のコード
これをできるだけ明確に表現できればと思います。この関数の外にソリューション全体を表示できない場合、これを理解するのが非常に混乱していることは今でもわかります。
zip - 単一のInputStreamを介して複数のZipEntriesを読み取るにはどうすればよいですか
InputStreamをパラメーターとしてサードパーティライブラリに渡す必要があります。サードパーティライブラリは、InputStreamから完全なコンテンツを読み取り、そのジョブを実行します。
私の問題は、私のファイルのいくつかがZipファイルであり、複数のZipEntryが含まれていることです。私が理解していることから、一度に1つのzipEntryを読み取り、次にzipInputStream.getNextEntry()を実行してから、もう一度読み取ることができます。ただし、サードパーティのライブラリはこれを理解しておらず、単一のInputStreamを想定しています。zipファイルのすべてのzipエントリは、単一のinputStreamとして使用できる必要があります。
その方法を教えてください。ファイルがローカルに(別のサーバーに)保存されていないため、ZipFileを使用できません。また、すべてのzipEntriesを読み取って、ByteArrayOutputStreamまたは文字列を作成することもできません。これは、ファイルが非常に大きくなる可能性があり、メモリ使用量が急増するためです。
1つのinputStreamが1つのzipファイルの複数のzipエントリから透過的に読み取れるようにする方法が必要です。
よろしくお願いします、プラザンナ
c# - File.OpenRead でファイルを開くときの System.IOException
内容を解凍するためにファイルを開くと、次の例外が発生します。Windows エクスプローラーでファイルを選択するか、ファイルの上にマウスを置いてツールチップを表示すると発生します。
ファイルが使用されなくなるまで待ってから読み取る方法はありますか? 基本的に、新しい zip ファイルのフォルダーを監視し、zip ファイルの内容を解凍してから削除します。
イベント ハンドラー: