問題タブ [nio2]
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 - OS が POSIX に準拠しているかどうかを確認する方法
私は、一時ファイルを作成し、それらを別の場所にコピーするクロスプラットフォーム アプリケーションを作成しています。(デフォルトでは、所有者のみが一時ファイルへの読み取りアクセス権を持っています。)次のようにPOSIXファイルのアクセス許可を使用してみました:
ただし、これにより、非 POSIX プラットフォームでは例外が発生します。
他のプラットフォームとの互換性を損なうことなく、必要に応じてファイルのアクセス許可を使用できるように、簡単なチェックを追加したいと考えています。
java - URLからパスに変換する簡単なNIO2のみの方法はありますか
取得した URL からディレクトリ (コンテンツを含む) をコピーしたい
jar:file:/D:/../some.jar!/someparent
またはのいずれかを返しますfile:/D:/../someparent
FileSystem
(jar intern dirsの場合)と再帰的にコピーすることを考えましたFiles.walkFileTree(..)
。
jar:file:/D:/../some.jar!/folder
FileSystem NIO2 のみを取得するように変更することは可能ですか?
java - 特定の日付/時刻に基づいてファイルを一覧表示する DirectoryStream.Filter の例
例として、60日より古いディレクトリ(およびそのすべてのサブディレクトリ)の下にあるすべてのファイルをリストすることができる場所のDirecoryStream.Filter
例を調査しようとしています。newDirectoryStream
上記のコードでは、DirectoryStream.filter
?
特定のタイムスタンプよりも古いファイルを削除しようとしていて、Java 1.7より前のファイルFile.listFiles()
がハングするプロジェクトにいるので、これは大きな助けになります。
Files.walkFileTree()
オプションを提供できますか?
java - DatagramChannel、ブロッキング モード、および CPU
次のコード スニペットを取得します。
このコードは にあり、最大 12 の s (したがって 12 のスレッド)Callable
を作成して、Callable
12 の異なるポートから異なるデータを含むマルチキャスト パケットを取得します。3~8秒ごとにネットワーク上で放送されている情報から読み取るだけです。
12 個のポートを継続的にプールすると (情報を待ち、情報を取得するなど)、CPU の 1 つを 100% 消費します。
JVisualVM で実行をプロファイリングすると、実行時間の 90% が 、java.nio.channels.DatagramChannel#receive()
より正確には に費やされていることがわかりcom.sun.nio.ch.DatagramChannelImpl#receiveIntoBuffer()
ます。
ブロッキングモードがCPUを大量に消費する理由がよくわかりません。
ブロッキング モードの代わりに sを使用する記事をいくつか読みましたが、 withがブロッキング チャネルより消費量が少ない
Selector
理由がよくわかりません。while (true)
Selector
java - Java NIO2 の一時ファイルからの Files.copy での AccessDeniedException
Files
Java 7 と新しいクラスに慣れてきました。
ある時点でファイルの内容を置き換える必要がある小さなアプリケーションを作成しています。何か問題が発生した場合にターゲット ファイルが消去されないように、一時ファイルを使用しました。AccessDeniedException
ただし、実際のコピーを実行すると、常にエラーが発生します。
これが私のコードです:
getCurrentConfigFile()
ターゲット ファイルのパス作成を処理します。
コードを実行すると、.bat
スクリプトを介して実行され、標準のコマンド プロンプトまたは昇格の両方でエラーが発生します。ターゲット ファイルはC:\temp\tests
、同じ Windows ユーザーで作成したディレクトリにあります。
ターゲットへの直接書き込みが機能するため、問題は一時ファイルからの読み取りにあるようです。次はどこを見ればいいですか?
java - Nio2 ウォッチサービス
私はnio2のファイルウォッチャーについて学んでいます.サンプルファイルには、ファイルをマップしてキーを監視するマップ変数があり、次のコードがありました:
この例によると、監視サービスが時折誤検知 (アプリケーションが監視しているファイルにマップされていないキー) を返す可能性があると信じるようになりましたが、Oracle リファレンスではそのようなチェックは行われません。本当に辞書が必要かどうかはわかりません。nio2 の経験がある人は、これに光を当てることができますか?
java - マウントされた CIFS 共有内のファイルに対する権限を設定する - NIO.2
次の例のように、作成時に一連の属性を追加しようとしています。このコードは、マウントされた CIFS 共有に特定の権限 (「rw-rw-r--」) を持つ POSIX ファイル システムに新しいファイルを作成します。
簡単なコードを実行した後、ファイルは作成されましたが、そのアクセス許可は
必要なものの代わりに(コード「rw-rw-r--」を見てください)
誰かがその問題で私を助けることができますか?
java - NIO.2 非同期チャネルのコーディング ガイドライン
たとえば、100500 バイトを配列に読み込みたい:
ここでの LambdaAdapter は、CompletionHandler を 3 つの引数を持つ関数型インターフェイスに変換する単純なラッパーです。
ともかく。オフセットは「アタッチメント」パラメーターに入れることができ、ラムダは事前に宣言してフィールドとして再利用できます。ただし、結果として得られるコードは常に醜い醜い醜いものです。
このような単純なタスクでも、許容できるソリューションを作成できませんでした。読み取りが書き込みとインターリーブされ、複雑なロジックでラップされる複雑なプロトコルの場合はどうなるでしょうか。
非同期APIを処理する適切な方法を知っている人はいますか? ここで Scala が世界を救うことができると思われる場合は、気軽に使用してください。
java - ファイルが変更されるとJava NIO 2 DirectoryStreamリストが変更されます
ディレクトリ内のファイルを一覧表示するときに奇妙な動作に気付きました。私の状況では、データベースに保存するtxtファイルのリストがあり、それらのデータファイルに対応して、dbのメタプロパティとして関連付けられている各txtのタグを含むxmlファイルがあります。
ディレクトリからファイルを一覧表示し、xml ファイルを読み取ると、ストリームがどのように変化し、既に db に追加されているファイルが再度一覧表示されます。ファイル名はデータベース内の ID であり、一意です。それらを再リストすると、主キーの制約に違反します。
リスティングが乱れる理由を知りたいですか?
現在、一部のファイルでは正常に動作しますが、すでにリストされているファイルが再び戻ってくることがあります。同様に 1.txt が処理されて db に保存されましたが、後のループで再びリストされます。