問題タブ [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 投票する
4 に答える
2937 参照

java - Java6でのJava7SDK機能の使用

利用可能な場合、Java 7 SDKのNIO2機能の一部(具体的にはファイルシステムウォッチャー)を使用することに興味がありますが、Java 7用にクラスをコンパイルして、Java6ランタイムを除外したくありません。主な理由は、Mac OS Xとの互換性を維持したいという理由と、ユーザーにアップグレードを強制したくないという理由です。

これは可能ですか?それを行うための最良の方法は何ですか?リンクや例はありますか?

これが私が想像できるいくつかの方法です:別のコンパイラでクラスファイルをコンパイルし、Javaバージョンに基づいて動的にロードしますか?または多分反射を使用していますか?それとも、Java6互換のクラスを生成するためのJava7のコンパイラ設定だけがあるのでしょうか。

私は醜い混乱にならない解決策を探しています:)ですから、理想的には、インターフェイスの2つの実装を記述できます。1つは新機能を使用し、もう1つは使用せず、反射呼び出しを行う代わりに動的に1つを選択します。あらゆる所に。

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

java - Java I/O: r/w 操作の前に、ファイルが別のプロセスによってロックされていないことを確認する

Java 7 WatchService API に基づいて、ディレクトリ内のファイルの内容を追跡するアプリケーションで、繰り返し発生する問題に遭遇しています。基盤となるファイル システムがファイルに対して変更イベントを発生させた場合、すぐにその SHA-256 を計算したいと考えています。

しかし、別のプロセスがファイル (Word など) を開いていることがよくあります。そのため、排他ロックが保持され、アプリで読み取り/書き込み操作ができなくなります。開いたファイルに対してストリーム/チャネルが作成された場合、nio API の FileNotFoundException または FileSystemException が次のようなメッセージとともにスローされます。

ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません

ファイルが実際にfsに存在しない場合、「実際の」FileNotFoundExceptionをマスクせずにそのようなケースを検出するソリューションを見つけることができませんでした。

File.exists を介して存在を確認し、ストリームを開いたときに FileNotFoundException がスローされた場合、ファイルがロックされていると推測できるというアイデアを思いつきました。私はこれに関するあらゆる意見を受け入れます!

ありがとう!

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

java - HTML5: API にファイル変更通知はありますか?

HTML5 File APIを見てみました。HTML5 を使用してファイルを処理するためのこのチュートリアルも参照しました。

ファイル変更通知用の API はありますか? Java NIO2 ライブラリーの WatchService APIに似たものを期待していました。

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

java - nio2 クラスのウォッチ サービス API に関する問題

プロジェクト内の特定のディレクトリを監視するために、nio.2 クラスのウォッチ サービス API を使用しています (OS プラットフォーム Ubuntu 11.10)。変更が行われるたびに、たとえば abc.json という名前の新しいファイルが監視対象ディレクトリに追加された場合、最初に CREATED イベントが発生し、次にすぐに MODIFIED イベントが発生します。これは、OS が最初に 0 バイトのファイルを作成してから変更するために発生することがわかりました。MODIFIED イベントではなく CREATE イベントのみを発生させるには、 http://java.dzone.com/news/how-watch-file-system-changesにあるコードにどのような変更を加える必要がありますか。

次に、MODIFY イベントが発生すると、event.context().toString(); メソッドは、CREATED または DELETED イベントによって指定されたファイル名の代わりに、この.goutputstream-N2Z89V のような出力を提供します。変更されたファイル名を取得するにはどうすればよいですか?

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

java - AsynchronousFileChannel の transferTo に相当するものはありますか?

私はJava 7でNIO2をいじっていましたが、同期兄弟のようなメソッドAsynchronousFileChannelがあると思いました。transferToFileChannel

ローカル ファイルと開いている TCP ソケットの間でゼロコピー転送を実行しようとしています。私は単純に a を作成し、 myを最後の引数としてFileChannel呼び出しようとしましたが、非同期ソケットのバージョンが a ではないため、Java にはそれがありません。transferToAsynchronousSocketChannelWritableByteChannel

AsynchronousSocketChannelそれがオプションとして除外された場合、バイトをレバレッジDMAにパイプできるようにする回避策または外部ライブラリを知っている人はいますか?

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

java - SeekableByteChannelを使用してリトルエンディアン形式で整数を読み書きするにはどうすればよいですか?

リトルエンディアン形式のSeekableByteChannelを使用して、符号付き整数と符号なし整数を読み書きする必要があります。これはばかげているように見えるかもしれませんが、JDKで何かを見つけることができません。私は何かを逃したことがありますか、それとも私はこれを自分で転がすことが期待されていますか?これは問題ありませんが、今日は車輪の再発明をする気はありません。:-)

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

java - NIO2 n00b、FileVisitor/BufferedWriter

私は独学で NIO2 を学んでおり、理論をテストするためにいくつかの実践的な実装を行っています。現在、コンパイルして実行し、fileVisit で期待することを実行する FileVisitor の実装を作成しましたが、postFileVisit では実行しません。つまり、.xml および .xhtml ファイルのテーブル行をカウントし、結果を含むテキスト ファイルを作成しますが、特定のディレクトリのテーブル行の総数は追加しません。ただし、postFileVisit は、ディレクトリに .xml ファイルまたは .xhtml ファイルがない場合でもログファイルが作成され、タイムスタンプが付けられるという点で、いくつかのことを行いますが、コード行 97 から 101 は効果がないようです。だから、私が台無しにしているのは BufferedWriter の何かだと思います。ご協力ありがとうございました:

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

java - FileVisitor で最後のファイルがいつアクセスされたかを知る方法は?

ディレクトリで最後にアクセスしたファイルで何かをする必要があります。visitFile()自分への現在の通話が最後 の通話かどうかを知るにはどうすればよいですか?

(特定のディレクトリ内のすべてのファイルとディレクトリを一覧表示したいだけです。そのために、実装にdepthフィールドを導入し、深さが 0 より大きい場合はI return で返します。(そして、 をインクリメントします。)問題は、いつを 0にリセットするかわからないことです。別のディレクトリに対してこの FileVisitor 実装で を呼び出すと、はすでに > 0 であり、指定されたディレクトリのみがリストされます。)FileVisitorpreVisitDirectorySKIP_SUBTREEdepthdepthwalkFileTreedepth

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

java - FileStore のディレクトリを見つける

フラッシュ ドライブがコンピュータに接続されたことを検出する方法を探しています。これまでのところ、私が見つけた解決策は、変更をポーリングFileSystem#getFileStoresすることでした。これは確かに、いつフラッシュ ドライブが挿入されたかを教えてくれますが、私が知る限り、フラッシュ ドライブの場所を取得する方法はありません。FileStore#type戻り値は実装固有であるため、FileStore#nameどちらも信頼性が非常に低いように見えますが、FileStore.

それを念頭に置いて、次のコード:

この出力が得られました:

結局のところFileStore#type、 はドライブのフォーマットをFileStore#name返し、ドライブのデバイス ファイルの場所を返します。私が知る限り、ドライブの場所を持つ唯一の方法はtoString方法ですが、その特定のソリューションが他のオペレーティングシステムでどれだけうまく機能するかわからないため、そこからパス名を抽出することは危険に思えます。 Java の将来のバージョン。

ここに欠けているものはありますか、それとも純粋にJavaでは不可能ですか?

システムインフォメーション:

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

java - JavaNIO2を使用してjarアーカイブ内のzipファイルにアクセスする方法

jarアーカイブ内にあるzipファイルにアクセスしたいのですが。NIO 2の機能で可能になるはずだと思ったのですが、うまくいかないようです。誰かがその方法とそれが可能かどうかを知っていますか?

NIO 2の前は、最初にzipファイルを抽出しないと不可能だったことをすでに読みました。また、TrueZIPライブラリがこの機能を提供していることも読みました。しかし、Javaの「ネイティブ」機能の問題を解決したいと思います。

よろしくお願いします、

デビッド