問題タブ [bufferedoutputstream]
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 - RandomAccessFile.seek() はどのように機能しますか?
APIによると、これらは事実です。
- この
seek(long bytePosition)
メソッドは簡単に言えば、パラメーターで指定された位置にポインターを移動しbytePosition
ます。 bytePosition
がファイル長より大きい場合、(新しい) 末尾にバイトが書き込まれない限り、ファイル長は変更されません。- 読み飛ばした長さのデータが存在する場合、そのデータはそのまま残される。
ただし、気になる状況は次のとおりです。データのないファイル (0 バイト) があり、次のコードを実行した場合:
100,000 バイトすべてが0
ほぼ瞬時にいっぱいになります。たとえば、10ミリ秒で200GB以上をクロックできます。
しかし、同じプロセスなどの他の方法を使用して 100000 バイトを書き込もうとするとBufferedOutputStream
、ほぼ無限に長い時間がかかります。
この時間の違いの理由は何ですか?n
バイトのファイルを作成して s で埋めるより効率的な方法はあります0
か?
編集: データが実際に書き込まれていない場合、ファイルはどのようにデータで満たされていますか? このコードのサンプル:
これは出力です:
さらに、ファイルが十分に大きい場合、スペース不足のためにディスクに書き込むことができなくなります。
java - Apache POI XWPF ドキュメントの画像に色の歪みがある
ハイパーリンクによって参照される多数の (数百の) 画像を含むレポート テンプレートを設計しようとしています。ドキュメントを 25Mb 未満にしたいので (電子メールやその他の理由で)、次のコードを使用して画像を圧縮しようとしています。
画像はドキュメントに書き込まれますが、色が歪んでいます。私の場合、それらはすべて赤/オレンジ色です。これを引き起こしている原因/何をすべきかについてのアイデアはありますか?
java - BufferedOutputStream (java) の送信を防ぐことはできますか?
を使用して文字列を OutputStream に書き込もうとしています
このメソッドを使用して別の文字列を正常に送信し、(ストリームを介して受信したメッセージに応答して) 上記のメッセージを送信しようとしました。
この呼び出しでは、"B" が書き込まれた直後に書き込み操作によってバッファーがフラッシュされ、その結果、ストリームを介して 2 つのパケットが送信されます。1 つ目は 1 文字です。2 番目には残りの文字列が含まれます。サーバーが最近更新されるまで、これは Linux で正しく機能していました。
OutputStream または BufferedOutputStream に、write() をアトミック操作として強制的に処理させたり、flush() まで送信させないようにする方法はありますか?
私も試してみました
同じ結果で。
java - GZIPOutputStream と BufferedOutputStream のパフォーマンス
私のアプリケーションは、大量のビデオと i2c センサー データをディスク ファイルにできるだけ速く記録しています。現在、私はすべてをバイトに変換しており、BufferedOutputStream で書いています。@Siguza は親切にも、GZIPOutputStream を調べることを提案してくれました。賛否両論のパフォーマンスの問題について何か考えがあるかどうか疑問に思っていました...プロセッサがはるかに進んでおり、ディスク書き込みがボトルネックであると考えています-書き込みの前にGZIPOutputStreamを介してオンザフライで圧縮することを望んでいます良い戦略。これについてのご意見は大歓迎です。
追加: コメントに応じて ...
圧縮はそれほど高価ではないことがわかりました...そして、アーウィンが正しく指摘したように、私が最初の質問をした方法は良くありませんでした。圧縮のパフォーマンスに関する問題は、BufferedOutputStream と GZIPOutputStream の間ではありません...圧縮されたストリームと解凍されたストリームの両方を BufferedOutputStream にラップする必要がありますが、元の FileOutputStream を GZIPOutputStream にラップする前に最初にラップすると、どれだけのコストが追加されますか? BufferedOutputStream にラップされます。ここに答えがあります。コードを使用しています
私の2012年のmacproラップトップは、1M intの書き込みを行います
zipped=true で 38ms - ファイルサイズ 4MB
zipped=false で 21ms - fileSize 4KB
そして、はい、私は圧縮が好きです:-)
読み取りパフォーマンスは、83 ミリ秒と 86 ミリ秒の間でほぼ同じです
と
すべて良い...