問題タブ [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 - NIO.2 FileVisitor 型がジェネリックなのはなぜですか?
私は Java NIO.2 とそのファイル操作についていくつかの調査を行っており、現在はファイル ツリー ウォーキング関数とクラスで遊んでいます。
NIO.2 FileVisitor
API は素晴らしいです。10 年前ではなく、最近になって Java SE に追加されたのは残念です。ただし、少し気になることがありFileVisitor
ます。インターフェイスをジェネリックにするポイントは何ですか?
ネット上のすべての例は、型を使用しFiles.walkFileTree()
ていることを意味する使用方法を示していFileVisitor<Path>
ます。しかし、私はこのインターフェースをPath
. 他の種類のツリー (インメモリ ツリー?) をウォークするために使用できる可能性がありますが、FileVisitor
これは適切ではないと感じていますFileVisitor
。 Sを投げIOException
ます。
では、型をパラメータ化する理由はありましたFileVisitor
か?
java - Java 7 zipfs: ファイルもフォルダーです
Java 7 の ZipFS サポートを使用しています。
https://gist.github.com/stain/5591420
少し奇妙に感じる動作を示しています。基本的に、ZIP ファイル システムを作成し、任意の名前のファイルを作成し、さらに同じ名前のフォルダーを作成できます。
この理由は、内部的にフォルダーの名前に「/」が追加されるためと思われますが、この新しい名前は返されないため、ファイルが成功した直後に Files.isDirectory() が false を返すという奇妙な状況になります。 createDirectory()。
したがって、接尾辞として「/」がある限り、両方を使用することもできます。ルートのディレクトリ リストを作成すると、このようにリストされます。
現在、ZIP 形式自体は、ZIP ファイル内のエントリのみを処理するため (同じ名前の複数のエントリを許可する場合でも)、これを許可していますが、「FileSystem」の通常の使用では、通常、同じ名前の複数のエントリは許可されません。フォルダを2回作成しようとするとわかるように。
生成された ZIP ファイルは、infozip、7Zip、および Windows 8 で正しく参照できます。しかし、ネイティブ ファイル システムはそのような二重性をサポートしていないため、解凍しようとすると明らかに失敗します。
これは機能ですか、バグですか、それともその中間ですか?
java - Nio2 を使用して大きなファイルを読み取る方法
現在、約3万行のテキストファイルを読み込もうとしています。
私はどのように読んでいますか?
java.io.BufferedReader を使用して読んでいます
これは、私のアプローチを表す小さなコード スニペットです。
次のケースでNIO2を使用してみました
次の例外が発生しました
まず、私のアプローチは正しいですか?
NIO2、apache FileUtils、またはファイルをより速く読み取るための他の API に効率的で高速なアプローチはありますか?これにより、ファイルの読み取りプロセスが高速化されます。のよう
br.readFirst(1000);
に最初の 1000 行のセットを読み取ることができます
が、ロジックのように行ごとに読み取ったり反復したりする必要はありません。
java - java.nio DatagramChannel 非ブロック モード.. まだブロックする必要がありますか?
私は java.nio の非同期機能を調べてきましたが、これまでのところ、AsynchronousByteChannel
読み取りまたは書き込み操作ごとに完了コールバックを提供できるので、このクラスのファンです。これは、scala のFuture
クラスにうまく適合します。
今、私はDatagramChannel
非同期的に対話しようとしています。(好奇心の問題として、私は独自の torrent クライアントを実装しようとしていますが、一部のトラッカーは UDP を使用しています。)
現在の私の目標は、元の署名から電流read
とメソッドを適応させる手段を見つけることです...write
次のようなスカラ未来指向の署名に...
API を調べてオンラインで例を見つけ、Selectorクラスへの道を見つけました。私が知る限り、それはDatagramChannel
「ノンブロッキング」にするために使用する必要があるものですが、関連すると思われる3つの方法があります。
したがって、「非ブロッキング」の私の選択は、ブロックするか(wtf?)、select メソッドの 1 つを繰り返し呼び出すビジー ループを実行するスレッドを占有するかのいずれかです。これは私の問題です。
を使用して真のノンブロッキング IO を実現する方法はありDatagramChannel
ますか? そうでない場合、実際のブロッキングを処理する (「最小化」を読む) 最善の方法は何ですか?
java - Struts 2 を使用してアップロードした後にファイルを削除するには?
Struts2でファイルをアップロードできたのですが、指定したディレクトリをドロップしたいのですが、ファイルを削除する方法がわかりません。
これが私のコードです:
java - Java 7 NIO.2 Files.getLastModifiedTime タイムゾーン
ファイル/ディレクトリの最終変更時刻を特定する必要があるプログラムを作成しています。今回は Joda Time を使用して処理したいので、Java 7 NIO.2 クラスFiles
を使用してファイルの最終変更時刻を取得しています。そのメソッドは、便利なメソッドを持つクラスgetLastModifiedTime()
のインスタンスを返し、その結果を Joda Timeクラス コンストラクターに渡します。FileTime
toMillis()
DateTime
ただし、コンストラクターはインスタンスがデフォルトのタイムゾーンで作成されることDateTime(long)
を明示的に言及しているため、これは間違っていると感じています。ただし、ドキュメントでは、そのタイムゾーンについてどこにも言及していません。コードを調べました。非常に単純なようで、その方法は、UTC タイム ゾーンを使用していることを示唆しています (UTC タイム ゾーンを作成し、ミリ秒を直接設定します)。DateTime
FileTime
FileTime
toString()
Calendar
では、FileTime
UTC または現地時間を使用しますか? FileTime
に変換する正しい方法は何DateTime
ですか?
java - NIO2 API の使用時にチェック例外を取り除く
現在、Guava API の助けを借りて次のコードを使用して、クラスパスからプロパティ ファイルをロードしていました。
Java7SE で導入された新しい NIO2 API を試し、Guava API 呼び出しを削除することにしたので、コードを次のように変換しました。
URL
しかし、変更されたコードは、との間で変換が発生する行でチェック例外をスローしますURI
。私はそれを取り除くことができる方法はありますか?Path
たとえば、指定されたインスタンスを取得できますURL
か?
PS私は、変更されたコードが元のものと意味的に同じではないことを認識しています-リソースが見つからない場合はグアバのgetResource
スロー、この場合はJavaのリターン。IllegalArgumentException
getResource
null
java - jdk7 ウォッチ サービス API では、いつ OVERFLOW イベントがスローされますか?
オーバーフローのドキュメントには次のように記載されています。
OVERFLOW – イベントが失われたか破棄された可能性があることを示します。
どのような状況でイベントが失われたり破棄されたりすることを期待すべきかについては述べていませんか? 最初は、フォルダーに大量のファイルを非常に高速に書き込んだ結果だと思いました。サイズがゼロの数千のファイルを作成し、監視対象のディレクトリに移動しました。オーバーフローなし。
私は何が欠けていますか?