問題タブ [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 - バッファを使用して FileInputStream オブジェクトから特定のバイト数を読み取る方法
以下のように連結されたファイル内に一連のオブジェクトが格納されています。
ファイルのサイズはシリアル化された長いオブジェクトであり、ファイルはファイルの生のバイトです。
入力ファイルからファイルを抽出しようとしています。以下は私のコードです:
私のコードは、最初の sizeOfFile を読み取った後に失敗します。複数のファイルが保存されている場合、残りの入力ファイルを 1 つのファイルに読み込むだけです。
誰でもここで問題を見ることができますか?
よろしく。
java - バイト配列の長さをバイト配列に保存します
BufferedOutputStream に 3 回書き込んでいます。
別のクラスで書き込まれた値 (b1.length) を取得したいのですが、取得した値は最初の *.println() とは異なります。
例えば:
Println 1 --> 123744
Println 2 --> 53858
Println 3 --> 177603
プリントイン 4 --> 96
その場合、println1 と println4 は同じサイズを返す必要があります。私が間違っていることは何ですか?
b1.length バイトである 1 バイト (177603-123744-53858 = 1) が書き込まれていることを確認しました。
誰かが最初のバイト配列のサイズを正しく書くのを手伝ってくれますか?
android - Android、ビデオ フレームをリアルタイムで書き込むと一時停止する
ビデオ フレームをキャプチャし、MediaCodec でエンコードして、ファイルに保存しようとしています。私が使用しているコードは次のとおりです。
SurfaceView の onPreviewFrame に到着したフレームごとに、AvcEncoder の offerEncoder() メソッドが次のように呼び出されます。
問題
今、私が抱えている問題は、エンコードされたフレームをファイルに書き込むことです。N フレームごとに (大まかに言えば、毎回まったく同じというわけではありません)、outputStream.write(outData, 0, outData.length)
AvcEncoder の offerEncoder メソッドのステートメントには、より長い時間がかかるようです (他の反復よりも数倍長くなります)。これは、実際にはファイルへの書き込みであるバッファをフラッシュするときに発生する可能性が高いと想定しています。(この仮定が正しくない場合は修正してください)。
これにより、その間に到着したフレームがドロップされ(ビデオの結果に基づいて推測されます)、Nフレームごとに記録されたビデオが一時停止します。
このステートメントをコメントアウトすると、offerEncoder メソッドの反復にほぼ同じ時間がかかります。
質問
ファイルへの書き込みがスムーズになるようにこの問題を解決するにはどうすればよいですか。他の誰かがこの問題に遭遇しましたか? 多くの人がこのコードを使用していることがわかりますが、これまでのところ、この問題について不満を述べている人はいません (または、少なくとも私は見つけられませんでした)。
ありがとう。
java - ファイルから復号化した後、Java が正しくない \n 文字を返す
AES暗号化と組み合わせて、Java IOにこの奇妙な問題があります。テキストの末尾に \n を追加して、暗号化されたテキストをバイナリ ファイルに書き込んでいます。ねえ、私の美しいひも...見て!私の美しい弦のもう一つ...
データを読み返すと、多くの余分なタブが付いた次のテキストが返されます。my beautiful string... 見てください! 私の美しい弦のもう一つ...
ここに私の自己完結型のコードがあります:
コンソール出力は次のとおりです (余分なスペースがあります)。
私は何を間違っていますか?
android - flush() にもかかわらずデータをアップロードする前に、OkHttp は最大 800kb をバッファリングします。
画像のアップロードの進行状況を公開しようとしています。クライアントとして okhttp を使用してアップロードし、mimecraft を使用してマルチパート ファイルをパッケージ化します。
データがソケットに書き込まれたときにバイトカウントを書き込むログを追加し (正しく判断できる場合は 4kb のチャンクで)、アップロードしました。
問題は、データのチャンクが書き込まれるたびに出力ストリームでフラッシュを呼び出すと、出力ストリームに約 800kb が書き込まれるまで何もアップロードされないように見えることです。そのポイントに達すると、最大 100kb をアップロードするように見え、アプリはさらに 100kb を出力ストリームに書き込み (解放されたスペースのように、もう少し書き込める)、続行します。
この結果、(1.2MB のファイルで) 最初の 800KB がほぼ瞬時に書き込まれ/報告され、次にアップロードが開始され (Charles ネットワーク ソフトウェアを介して追跡されます)、次のファイルで 100KB の読み取り/書き込み/アップロードが開始されます。数秒後、最後のバイトが出力ストリームに書き込まれると、アプリはアップロードの 100% が書き込まれたことを報告します。ただし、ネットワーク クライアントはまだネットワーク バッファにある最後の 800kb をアップロード中であり、それをアップロードするためにさらに 5 ~ 10 秒間そこに留まり、その後リクエストを終了するため、これは当てはまります。
誰かがこの経験をしたことがありますか、またはこれがokhttpで一般的な問題であるかどうかを知っていますか?
乾杯
編集: 800kb 未満のファイルをアップロードする場合、250kb と 500kb をいくつかテストしましたが、それらはすべて、アップロードされる前にすぐにストリームに 100% 書き込まれますが、3 MB の画像でも 800 kb がアップロードされ、約 100 kb のチャンクに分割されます。 、書き込みループがそこにあり、アップロードされるたびに別の 100kb を書き込みます。
java - BufferedOutputStreamでファイルに書き込む方法は?
demo1.txt
からにデータをコピーしたいのですdemo2.txt
が、 でできますが、 /BufferedReader
でコピーしたいです。これを行う方法を教えてください。BufferedInputStream
BufferedOutputStream
java - BufferedOutputStream 複数行 Write in File
作成した関数に少し問題があります。この関数に文字列を与えるたびに、同じファイルの新しい行に保存されるようにしたいのですが、実際には、最後に与えた文字列のみを保存しています。何度も上書きするようなもの 助けが必要
たとえば、BufferedWriter には、それを行うのに役立つ newLine というメソッドがあります。
しかし、GZIPOutputStream クラスを使用したいので、BufferedOutputStream が必要です。
それを行う方法はありますか?ありがとう