問題タブ [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 - Java NIO2 同時完了ハンドラー
私はNIO2サーバーを書いています.AsynchronousSocketChannelで非同期読み取り操作を行う必要があります。これらの操作はそれぞれ、整数の読み取りと、同じチャネルからのこの整数に等しいバイト数の読み取りで構成されています。問題は、チャネルに 2 つ以上の CompletionHandler を続けて配置し (複数の読み取り操作の要求があるため)、これらのハンドラーの最初が起動さcomplete()
れると、最初のハンドラーのメソッドでさらに読み取りコードが正しく機能しないことです。チャンネルに情報があると、ハンドラーは即座に起動されます。さらなる読み取りが問題complete()
なく完了するまで、チャネルをブロックするにはどうすればよいFuture
ですか? ハンドラーをソケットに配置してから他のタスクに渡す必要があるため、Future を使用できません。
DataServerResponseHandler クラスは次のとおりです。
java - クラスパスからファイルを取得できません (NIO2 を使用)
ファイルの内容から文字列を作成したい。この答えによると、私はこのようにします:
(私が理解しているように、これは Java 7 の一部である新しい NIO2 API のパスです。)
stringTemplatePathパラメーターは、ファイルの名前 ( "template.html" ) です。このファイルの場所を確認します。クラスパスにあります: ../classes/template.html
この関数を呼び出した後、例外が発生します。
ファイル名パラメータを間違った方法で送信したのではないでしょうか? この変更を送信しようとしました: "file:///template.html"および"classpath:template.html"ですが、役に立ちませんでした。
また、私はこのコードを試しました:
この関数を呼び出したところ、次の例外が発生しました。
new File(stringTemplatePath)はファイルを作成できるため、クラスパスにファイルします。しかし、このファイルには非常に奇妙なパス ( /opt/repo/versions/8.0.9/temp/template.html ) があります。私はホスティングとして Jelastic を使用しています (環境: Java 8、Tomcat 8)。
更新: 最終作業ソリューション:
IOUtilsは Apache IO Commons の util クラスです。
重要な注意:
classから.getResourceAsStream(...)を呼び出すだけでは、リソース ファイルが見つからず、メソッドはnullを返します。
したがって、.getResourceAsStream(...)を呼び出す前に.getClassLoader()を呼び出すと、完全に機能します。
java - AsynchronousFileChannel を使用してファイルを非同期的に強制する方法
AsynchronousFileChannel
Java NIO.2のAPI にはvoid force(boolean)
メソッドが含まれています。
変更がデバイスに正常に書き込まれた後にのみ戻ることができるため、明らかにこのメソッドはブロックされています。
スレッドをブロックせずに同じことを達成する方法を探しています。
コメントで述べたように、これは標準の C ライブラリ関数と同等ですaio_fsync
: http://pubs.opengroup.org/onlinepubs/009695399/functions/aio_fsync.html
java - Files.newDirectoryStream 使用中の無限ループ
いくつかのダミー ディレクトリに zip ファイルを作成するテストを作成しました。
ビルド チームが下線を引く NAS ストレージを変更するまで、テストはうまく機能しました。これにより、ディレクトリからのストリーミングと書き込み中に無限ループが発生しました。
誰かが問題を説明できれば幸いです(パスイテレータの実装に関連していると思います)。
scala - カスタム NIO ファイルシステムが SBT のテスト タスクを介してロードされない
テストのために、インメモリ NIOFileSystem
実装 ( memoryfs ) を使用しています。私は以前にそれを利用したことがあり、Maven などで問題なく動作するようです。
ただし、現在、SBT プロジェクトでは、新しい を初期化することはできませんFileSystem
。
問題を再現するための最小限の SBT 構成を次に示します。
そして、ここにテストがあります:
実行sbt test
すると、次のようになります。
問題は次のとおりです。これは問題なく実行されるはずです。私の質問は:なぜ、どのように修正するのですか?
カスタム FS プロバイダーのドキュメントを一瞥すると、SBT が何らかの形でクラスパスを中断しているように見えますが、その理由を説明するのは困難です。
注:興味深いことに、IntelliJ IDEA のテスト ランナーは問題なく動作しているように見えます。問題はコマンド ライン (「SBT 固有」) のみにあります。