問題タブ [java-nio]
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 - JavaでのFile.exists()の代替
私はそれが私に起こるとは思っていませんでしたが、Javaで最初のバグに遭遇しました:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5003595
私はバグ(Linux上のNFS)で説明されているのとほぼ同じ状況にあり、それFile.exists()
が正しい値を返さないことがわかります(少なくともすぐには)。
だから私の質問は、ファイルが存在するかどうかをチェックするこの方法に代わるものはありますか?可能であれば、OSに依存しないようにしたいです。
編集:回避策を見つけました。を呼び出すとls $filedir
、NFSはJavaの問題を引き起こしているキャッシュ/メタデータを更新しFile.exists()
、正しい値を返します。確かに、これは移植性を損なうため、完全に理想的ではありませんが、その問題に対処する方法はあります。
java - AsynchronousSocketChannelはどのように読み取りを維持しますか?
4 台のマシンに接続し、ソケットからデータを読み取る必要があります。nio2 の非同期モデルを使用することにしました。
ここに疑似コードがあります:
このコードを実行するには、新しいグループを作成し、それをすべてのConnector
sに渡します。
問題:
スレッドは、最初の読み取り (//#1
コメントがある場所) の後に解放されます。
解決 !
これを修正するCountDownLatch
ために、スレッドが読み取りを待機するように を導入しました。
質問:
これは ( CountDownLatch
) 問題を解決する正しい方法ですか? いいえの場合、最善の方法は何ですか?
スレッドのブロック ( latch.await()
) は、非同期モデルと矛盾していませんか?
java - JAVA NIO パッケージ、予期しないネットワーク エラーが発生しました
ネットワークドライブ上の画像を読み取るコードがあります。私は何千もの画像を読みましたが、たまに次の例外が発生することがあります。
以下は私がそれを得るコードです
`
この行で例外が発生します- int totalBytesRead = inputStream.read(fourBytes);
java - ユースケース OutputStream(java.io) vs Channel(java.nio)
書き込みたいデータが完全に受信/準備されたデータではない場合、どのチャネルがケースに使用されたかを正しく理解できましたか?
ただし、OutputStream は、すべてのデータを既に書き込むことができる場合に使用されます。
別の言い方
をすると、nio - 書き込み用のデータを非同期で取得する場合
io - 書き込み用のデータを同期で取得する場合
java - GCS Blob から特定の範囲のバイトを読み取る方法は?
指定されたサイズのチャンクで GCS blob の内容を読み取りたいと思います。GCS blob として保存された 10,000 バイトのファイルの最後の 5000 バイトを取得するテストを作成しました。ファイルは、1K の「0」、1K の「1」、1K の「2」、...、1K の「9」で構成されていました。
バイト 5000 から開始し、10,000 バイトを取得するように要求したため、最後の 5000 バイトのみを読み取ることを期待していました。ただし、読み取られたバイト数は 10,000 でした。「5」から始まる最初の 5000 バイトは、私が予想していたものでした。興味深いのは、最後の 5000 バイトが <CR><LF> で構成され、その後にファイルの先頭(1K の "0"、...、998 個の "4") が続くことです。最後の 5000 バイトのみを取得するにはどうすればよいですか?