問題タブ [filechannel]

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.

0 投票する
5 に答える
6732 参照

java - ファイルチャネルと RandomAccessFile のどちらが読み取りと書き込みのパフォーマンスに優れていますか?

私は最近FileChannelに出会いました。私はRandomAccessFileの大ファンです。しかし、ファイルからの読み取りとそのコンテンツの別のファイルへの書き込みを選択FileChannelするのはなぜだろうと思っています。RandomAccessFile

特定のパフォーマンス上の理由はありますか? FileChannelファイルチャネルを使用できる理由の1つになる可能性があるため、ロックをいかなる目的にも使用したくありません。他のStackOverflow 応答BufferReaderで提案されているように、使用したり、そのようなことはしたくありません。

0 投票する
1 に答える
4380 参照

java - RandomAccessFile 対 NIO チャネル

次の動作を理解しようとしています。私の古いコード、

O/P - 削除済み - false

「channel.close();」を実行した場合のみ ファイルを削除する前に。ファイルを削除して true を返しますか。

新しい置き換えコード、

O/P - 削除済み - true

ただし、これはアプリケーションが終了するまでファイルを削除しません。「fChannel.close()」を使用すると、すぐに削除されます。

いくつかの質問、

  1. なぜ異なる動作なのか、RA と Seekable Channel など、両方が異なるタイプであることを理解しています。しかし、よくわかりませんが、なぜ delete が異なる動作をする必要があるのでしょうか。
  2. 新しい実装では、アプリケーションが終了するまでファイルを削除しない場合は、false を返す (つまり、close が呼び出されるまで削除しない) か、すぐに削除する必要があります。

バグに遭遇したのか、何かが欠けているのかわかりません。任意のポインターが役立ちます。

ありがとう

0 投票する
1 に答える
383 参照

nio - java nio socketChannel.write() 欠落バイト

bBufferタイプのオブジェクトであり、それは(画像ファイルです)ByteBufferから来ました。FileChannel.map()クライアントでこの画像ファイルを受け取ったとき、それは完全な画像ではなく、画像の約半分が欠落していました。そこで、いくつかの統計をコンソールに出力して、書き込まれたバイト数を確認しました。出力は次のとおりです。

残りのバイトはどうなりましたか? (319923 - 131071) バイトが不足しているようです。

ファイルサイズやバッファ容量に関係なく、written等しい場合もあります。bBuffer.capacity()

0 投票する
1 に答える
1397 参照

java - 特定のバイト数を ByteBuffer に読み込む

10MB のバイナリ ファイルがあります。異なるサイズ (300、273 バイトなど) のチャンクで読み取る必要があります。読むために私はFileChannelとを使いますByteBuffer。現在、読み取りの反復ごとに、ByteBuffer読み取る必要がある新しいサイズを割り当てています。

ByteBuffer に 1 回だけ (たとえば 200 KB) 割り当てて、それに読み込むことは可能ですか (300、273 バイトなど)? 一度に 200KB 以上を読み取ることはありません。ファイル全体を読み取る必要があります。

UPD

メモリの制約により、ファイル全体を一度に読み取ることができません。そのため、チャンクで読み取りを実行します。効率も非常に重要です (そのため、複数の割り当てで現在のアプローチを使用したくありません)。ありがとう

0 投票する
1 に答える
701 参照

java - MappedByteBuffer が java.nio.BufferOverflowException をスローする

私はJava nioを学んでおり、MappedByteBufferとExecutorServiceを使用してファイルを非同期にコピーしています。私の問題は、メソッド MappedByteBuffer.put() が java.nio.BufferOverflowException をスローしていることです。しかし、私のデバッグでは、ターゲット ファイルのオーバー ポジションにコピーしていません。これは、ファイルの新しいコピーを作成するために使用するコードの一部です。

例外は次のとおりです。