問題タブ [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.

0 投票する
0 に答える
528 参照

java - 直感に反する AsynchronousSocketChannel の動作

次のテストを見てください。

Windows Java 1.7.0_05 では、次のように表示されます。

質問は次のとおりです。

  1. conn1.connect(addr)サーバーポートがまだバインドされていないのに、最初のポートが失敗しないのはなぜですか?
  2. assch.accept()最初のクライアント接続が保留中のクライアント接続を受け入れないのはなぜですか?

JDK の javadoc を読みましたが、答えが見つかりませんでした。

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

java - nio2 とファイルの属性

NetBeans NetBeans IDE 7.2 (ビルド 201207171143) をダウンロードしてインストールしました。Java: 1.7.0_03; Java HotSpot(TM) クライアント VM 22.1-b02。これはJDK 6を使用したEclipseの代わりです/主な理由は、ファイルと属性にアクセスする必要がある新しいプロジェクトを開始しているためです(アーカイブフラグのクリアを含むバックアップユーティリティ-誰か経験を共有できますか?)。ただし、インストールは java.nio.file.attribute を認識せず、エラーを設定します。何か案が?

0 投票する
2 に答える
15079 参照

java - Java 7 で Files.readAllLines(String path) がないのはなぜですか?

nio 2私はJava 7でパッケージを学ぼうとしていますが、そのFiles.readAllLines(Path p, Charset cs)方法を見つけました。cs私はそれが非常に便利だと思いますが、次のように、パラメーターのないバージョンが必要だと私は考えています:

とにかく、ほとんどの場合、メソッドはデフォルトの Charset で呼び出されると確信しているので、ショートカットがないのはなぜですか。このメソッドを持たないことを正当化する文字セットについて私が見逃しているものはありますか? Scalaにはこのオプションがあるので、私は非常に驚いています:

ですから、なぜJavaがすべきでないのかわかりません。ビューはありますか?

0 投票する
2 に答える
170 参照

java - Java nio2: toString に依存せずにファイルシステム間で Path オブジェクトをマップする

NIO2 を使用して、ソース ディレクトリの内容から zip ファイルを作成しています。最初にインスタンスを取得してからパスを生成する必要があるZipFileSystemを使用しています。Files.createDirectory(pathInZip)生成されたパスを使用して、またはを使用して zip ファイルにエントリを作成できますFiles.copy(sourcePath, destPathInZip)。これは問題なく動作しますが、回避したい醜い瞬間があります。

依存せずに、ある FileSystemProvider から別のパスにパスをコピーする方法はありますaPath.toString()か?. 醜いようです。私はいつでも 1 つのパスを繰り返し、もう 1 つのパスをインクリメンタルに構築することができました。

0 投票する
3 に答える
4215 参照

java - Java 1.7 でファイルパスを有効なファイルパスに変換する方法

Java 1.6 を使用すると、ユーザーがファイルパスを入力できます。その後、さまざまな正規表現を適用して、プラットフォームで無効な文字 (Windows では無効な「?」など) を削除し、パスの長さをチェックして、最終的に有効なファイルパスになるようにします。ファイルパスを作成する前に、OS の

しかし、次の 2 つの問題があります。

  1. 各プラットフォームで何が有効かどうかを判断するのは面倒です。
  2. プラットフォームのデフォルトのファイルシステムに基づいて推測していますが、もちろん OSX システムが FAT32 などの Mac 以外のファイルシステムに書き込んでいる可能性があります。その場合、これらのチェックは無効になります。

Java 7 で NIO2 を使用するより良い方法があることを期待していましたが、まだ解決策を見つけていません。

0 投票する
2 に答える
2727 参照

java - Java NIO2 AsynchronousSocketChannel/AsynchronousServerSocketChannel および TLS/SSL

NIO2 で利用可能なインターネット上のすべてのソース/サンプルは、TLS/SSL をサポートしていません。

java.nio.channels.AsynchronousSocketChannel java.nio.channels.AsynchronousServerSocketChannel

接続の SSLEngine ライフサイクルが AsynchronousSocketChannel.connect && AsynchronousServerSocketChanne.accept と異なることを理解しているので、TLS/SSL は AIO 実装内にカプセル化する必要があるため、両方を使用するにはどうすればよいですか? 注:Grizzlyプロジェクトで、すでに実装されていることについて話しているビデオを見て、ソースコードを見ましたが、AIOは見ましたが、TLS/SSL統合は見ませんでした...

前もって感謝します!

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

java - Java WatchService を使用してフォルダー内のフォルダーを監視する

フォルダーを監視するために、Java 7 で WatchService を試しています。WatchService に登録されているパスに追加されているファイルまたはフォルダーを監視したい。

登録されたパスにフォルダーを追加すると、ENTRY_CREATE として正しく検出され、watchEvent.context() でフォルダーの名前が返されます。しかし、そのフォルダーにフォルダーを再度追加すると、それは検出されますが、watchEvent.context() は同じフォルダーと ENTRY_MODIFY を返します。これは、そのフォルダーが別のフォルダーを追加することによって変更されているためです。

だから私はこれを理解していますが、構造内のすべてのフォルダーを登録する必要があるのか​​ 、それとも最上位のフォルダーを登録してリッスンするのか、作成して変更するのかわかりません

0 投票する
4 に答える
2650 参照

java - Java7 nio2 で利用可能なメモリ内 FileSystem 実装はありますか?

私は、IO 依存のコードをより簡単にテストできる、メモリ内の nio2 FileSystem 実装を探していました。

ネイティブのようですが、Java は (私の JDK で) aWin32FileSystemと aのみを提供しますZipFileSystem

ShrinkWrapにはそのようなものがあるようですが、主に ZIP ファイル システムなどを扱っているようです。

当分の間、新しい nio FileSystem IO を自分のプロジェクトに既に組み込んでいる人もいると思いますが、これについて私を助けてくれませんか?

ありがとう

0 投票する
2 に答える
2064 参照

java - 非同期NIO:サーバーに複数のメッセージを送信する同じクライアント

JavaNIO2について。

クライアントのリクエストをリッスンするために次のものがあるとします...

このコードは、クライアント接続プロセスを受け入れてから、別のコードを受け入れます。サーバーと通信するために、クライアントはAsyncSocketChannelを開き、メッセージを起動します。次に、完了ハンドラのcompleted()メソッドが呼び出されます。

ただし、これは、クライアントが同じAsyncSocketインスタンスで別のメッセージを送信したい場合は送信できないことを意味します。

別のAsycnSocketインスタンスを作成する必要があります。これは別のTCP接続を意味すると思いますが、これはパフォーマンスに影響します。

これを回避する方法はありますか?

または、別の言い方をすれば、同じasyncSocketChannelに複数のCompleteionHandlercompleted()イベントを受信させる方法はありますか?

編集:私の処理コードはこのようなものです...

これで、サーバーは非同期チャネルからメッセージを読み取り、応答を返します。クライアントは、答えが得られるまでブロックします。しかし、これは大丈夫です。クライアントがブロックしてもかまいません。

これが終了すると、クライアントは同じ非同期チャネルで別のメッセージを送信しようとしますが、機能しません。

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

java - 大量のファイルがコピーされている場合、JDK 7 Watchkey pollEvents が ENTRY_CREATE または ENTRY_MODIFY をキャプチャしない

特定のフォルダーに対して行われているすべての変更を監視しようとしています。2 ~ 5 個のサブフォルダーを含むフォルダーをコピーし、それぞれに 2 ~ 3 個のファイルがあります。すべてがうまく機能します。

複雑なフォルダ構造をコピーすると問題が発生します。たとえば、WEB-INF フォルダーのクラス フォルダーに多数のソース ファイルとサブフォルダーがあり、lib フォルダーに多数の jar ファイルがあるサンプル Web アプリケーション フォルダー (テスト目的のみ) をコピーする場合などがあります。

多くのファイルの「ENTRY_CREATE」および「ENTRY_MODIFY」の多くのファイル イベントが見逃されています。

NIO2 ウォッチャー API は信頼できませんか?

Oracle Web サイトに記載されている次のスニペットを使用しています。

そして、これは私がイベントをキャプチャする方法です: コードはまさにここにあるものです - http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com /javase/tutorial/essential/io/examples/WatchDir.java

私は、30 個のフォルダーに約 500 個のファイルをコピーし、理想的には ENTRY_CREATE と ENTRY_MODIFY に多くのファイルとフォルダーを通知する必要があります。ただし、キャプチャされた最大イベント (ENTRY_CREATE と ENTRY_MODIFY を合わせたもの) は 280 を超えていませんが、コピーされた 530 個のファイルとフォルダーに対して、最小 530 個の ENTRY_CREATE イベントだけを登録する必要があります。

oracle.com の監視コードに欠けているもの、または追加する必要があるものはありますか? これに関する提案は大歓迎です。