問題タブ [filevisitor]

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 投票する
3 に答える
21616 参照

io - JavaでFileVisitorを使用する正しい方法

パス全体とそのサブディレクトリの単一レイヤーをステップスルーしようとしています。ファイルごとに、5つのデータフィールドを読み取り、区切られたテキストファイルに出力する必要があります。単一のテキストファイルから読み取り、画面上の出力を検証することができます。その後、私は立ち往生しています。FileVisitの適切なパラメータが見つからないようです。いくつかの具体的な質問は、以下に投稿された私のコードのコメントです。そして、私はそれほど遠くはありませんが、出力ファイルに書き込むためのアイデア、つまり、配置したい場所が最も論理的な場所であるかどうかを知りたいと思います。

https://stackoverflow.com/questions/9913/java-file-io-compendiumおよびファイルビジター
http://docs.oracle.com/javase/7/docs/api/に関するJavaDocsの情報を確認しました。 index.html?java / nio / file/FileVisitor.html。ただし、FileVisitorを正しく機能させることはできません。

@Bohemianは、私が行ったことに変更interfaceすることを提案しました。class

以下のSSCCE...しかし、上記のバージョンのコメントは、私が持っている特定の質問を示しています。

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

java - ファイル移動時の例外

FileVisitorこれは、 がどのように機能し、ディレクトリを解析するかについての私の知識が限られていることに関係していると思います。私がやろうとしているのは、ディレクトリの内容を別のディレクトリに移動することです。私はこのFileVisitor<Path>ように実装することでこれを行っています:

次に、クラスMoverを次のように使用します。

fromを呼び出すときに2回追加するのは好きではありませんwalkFileTreeが、現在、私の問題は主にTODOコード内の の下の行にあります(ただし、それを解決する方法についてのコメントをいただければ幸いです)。その例外が発生する理由がわかりません。ファイルが既に移動されているためだと思います。その場合、コードが再び移動しようとするのを止めるにはどうすればよいですか?現在行っている方法は多かれ少なかれ正しいですか?

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

java - Java 7 の FileVisitor を使用してツリーを上っていきたい

検索している名前のフォルダーが見つかるまで、パスの低いポイントから開始して上に移動する (または「戻る」) 方法について、いくつかのガイダンスを探して検索しました。FileVisitor クラスは私を助けることができるように見えますが、頭からつま先までしか機能しないようです。

誰かが私に指摘できるものはありますか?

ありがとう、ジョン

{編集済み: コメントで返信してくれた 2 人にお礼を言うのは気が進まないようです。ほんとありがと!私は「当たり前!」を持っていました シンプルなアプローチを見た瞬間。そして、この記事は、FileVisitor を使い始めた人にとって役に立ちそうです。それらを一緒にすると、必要に応じて上下に移動できます。ジョン]

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

java - Java で walkFileTree メソッドをコンパイルできません

これは私のJavaクラスです:

この行:

エラーをスローします:PrintFiles cannot be converted to <? super Path>これは許容できますが、上記の行を次のように変更すると:

それはまだエラーを示しています。SimpleFileVisitor() has protected access in SimpleFileVisitor.だからどうやって walkFileTree メソッドを実行すると思います

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

data-structures - Java FileVisitor が動作する順序

この問題の答えは B と C です。なぜ B が答えの 1 つなのかはわかりますが、なぜ C も正しいのかわかりません。

誰かがCが正しい理由を説明できますか?

ここに画像の説明を入力

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

java - スレッドと「ツリー ウォーカー」を介して何千ものファイルを検索し、JTable に一致を書き込むと応答しなくなる

Windows 7 の検索プログラムを修正して、一致したファイルをJTable. これの前に、私はに書いていましたJTextArea。出力は醜いものでした。したがって、JTable出力します。しかし、JTable何千ものファイルを検索すると、プログラムが応答しなくなることがあります。(そうではありませんJTextArea。非常に滑らかです。)

私の質問は、応答性を改善する方法です。

Thread特定のノードから呼び出されmain、「ファイルツリーをたどる」ものがあります。

のクラス ヘッダーは次のTASKとおりです。

ここにありrunます:

ツリー ウォーキングのメイン ルーチンは次のとおりです (他に 3 つのルーチンがあり、1 つはディレクトリの処理用、1 つはディレクトリの後処理用、もう 1 つはエラー用です)。

一致したファイルとその情報は次のファイルに書き込まれますJTable:

Thread応答性を向上させるために、への書き込みに別のものが必要なのか、JTableそれとも を使用する必要があるのか​​わかりませんSwingWorker。いずれにせよ、実装方法がわかりません。

Thread別のことを仮定すると、reportメソッドをクラスに変換しimplements Runnableますか? 実装を視覚化するのに問題がありますが、必要に応じて理解できるでしょう。

私はかつてこのプログラムで をSwingWorker、おそらく間違って ( なしで) 使用していました。Thread出力エリアがひっきりなしに点滅したので諦めました。だから私はその道を行くことに熱心ではありませんが、もしお勧めであれば考えてみます。

質問が「意見」の領域に該当するとは思いません。応答性を改善する方法についてアドバイスが必要です。誰かが事前にエラーを指摘できるのであれば、間違った道を進みたくないだけです。

ここに画像の説明を入力

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

java - スレッドで FileVisitor を使用する検索プログラムで SwingWorker を使用しようとしています

これは、2015 年 8 月 16 日のこのスレッドの続きです

Searchを使用するようにプログラムを変更していますSwingWorker。元のコード (main以下に示す) にThreadは、呼び出されmain、特定のノードから「ファイル ツリーをたどる」コードがあります。

の元のクラス ヘッダーは次のTASKとおりです。

しかし、を使用するにはSwingWorker、(私は推測します)TASK extends SwingWorker元のrunコマンドを違法にする必要があります (エラー: runis finalin SwingWorker)。

これがオリジナルrunです:

を使用できないためrun、クラスの初期化の上のコードを次のように作成しましたTASK

しかし、現在、main以下の行でエラーが発生しています (現在、TASK は runnable を実装していないため、適切なコンストラクターはありません....):

そして、GUI が表示されたと言ってもnew TASK();、[検索] ボタンをクリックしても何も起こりません。ファイル ウォークはありません。エラーなし。からの出力TASKも表示されません。したがって、呼び出す機会はありませんSwingWorker。(実際、何が起こるかを確認するために [何も] TASK:のクラス ヘッダーから削除しましたpublic class TASK /*extends SwingWorker*/ implements FileVisitor<Path>。)

明らかな間違いがある場合は、それを確認したいと思います。そうでない場合は、長い時間をかけてSSCCE.

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

java - FileVisitor を使用する SwingWorker が、処理された情報を迅速に公開しない。GUI がハングする

処理された情報を迅速に公開せずに使用SwingWorkerする。GUI がハングします。私はそれがなかったことを望み、その問題の助けを求めています.FileVisitor

SwingWorkerインターフェイスを使用してFileVisitor、ユーザー指定の条件に一致するファイルを Windows ディレクトリ ノードで検索する方法の概要を次に示します。:

編集この 2 行だけを含めていれば、問題はすぐに解決された可能性があります

GUIの新しいインスタンスを開始しますSwingWorker。そのジョブは、開始JTableした のインスタンスによって見つかったファイル情報を ( に)表示TASKすることです。TASKをインスタンス化FileVisitorし、walkFileTree開始します。visitFileメソッドで見つかったすべての一致するファイルは、 to に対してpublish編集さSwingWorkerprocessます。

ほとんどの場合はうまく機能しますが、一致するファイルが大量にある場合、GUI は数秒間応答しなくなります。その間、大量の読み取りと表示が行われ、UI は数千のファイル読み取りごとに更新されます。

SwingWorkerバックグラウンドで を使用しているにも関わらずJTable、どうやら (推測では) 一致するファイル情報が多すぎると、追いつくには速すぎます。

これが私がそう言う理由です:

visitFileに信号を送るカウンターがありますが、TERMINATEレコードprocessを に追加するのは明らかに遅れていJTableます。println内部は、時間が経過するにつれて、一致を見つけるchunks率に応じて、通過した数が大幅に変化することを示しています。FileVisitor

visitFile終了後、 process(10001-2168) または 7833 レコードを に送信する必要がJTableありましたが、これには長い時間がかかり、GUI はほとんどの時間応答しませんでした。実際、最大の場合。マッチは(ばかげた)10,000で、プログラムは何分間もハングしますが、10,000レコードがJTable.

無反応でどうしたらいいのかわからない。STOP ボタンを押してプログラムを停止できるようにしたいです。Xまたは、ウィンドウを (閉じる)ことができます。とんでもない。

私はSwingWorker正しく使用していませんか?SwingWorker私が利用できるループがないため、ツリーウォークをベースにすることはできません(内部的なものです)。

PS明らかにハングしている間、最終的に最後のチャンクを発行するまでjavaw、CPU時間の25%を確実に使用し、メモリ割り当てを毎秒約16Kずつ増やしています。process

ここに画像の説明を入力

編集

私はここで助けを見つけたかもしれません。

しかし、ねえ、閉じますか??

私は私の質問を強調しました。