Javaで特定の名前のディレクトリを見つける最良の方法は何ですか?私が探しているディレクトリは、現在のディレクトリまたはそのサブディレクトリのいずれかに置くことができます。Javaでディレクトリを再帰的に検索する
答えて
あなたのソリューションは、File.listFiles(String)
Andrewに感謝します。私は1.6に制限されていますが、他の人はそうではないことを忘れています。 – MadcoreTom
* "私は1.6に制限されています" *私は(1.5 dev。ラッキーなドキュメント。 '@ since'タグを持っています。コンパイラにはバージョン互換性の '酸テスト'としてのクロスコンパイルオプションがあります。 Java 1.3用に開発していると言われても、私は最新のJava Docsにリンクしています。 ;) –
分割の使用を含むと征服のだろうか?単純なアプローチは:
- リストリストには、アプリケーション
- タスクを開始し、一致するディレクトリ、プリントを含んでおり、終了している場合、すべてのディレクトリ
- :すべてのディレクトリについては、タスクを開始することができ、それは以下を行いすべてのディレクトリに対して。
ファイルツリーを歩くには、FileVisitorインターフェイスを使用できます。 tutorialをご覧ください。 Find sample codesも参照してください。
これは、@ MadcoreTomの#listFilesより優れた解決策です。ファイルが見つかるとwalkを終了させることができます。 – Kong
何かのように:
public static final File findIt(File rootDir, String fileName) {
File[] files = rootDir.listFiles();
List<File> directories = new ArrayList<File>(files.length);
for (File file : files) {
if (file.getName().equals(fileName)) {
return file;
} else if (file.isDirectory()) {
directories.add(file);
}
}
for (File directory : directories) {
File file = findIt(directory);
if (file != null) {
return file;
}
}
return null;
}
あなたは再帰がstreams APIを経由して、この要件のJava 8で
import java.io.File;
public class CheckFile {
private static boolean foundFolder = false;
public static void main(String[] args) {
File dir = new File("currentdirectory");
findDirectory(dir);
}
private static void findDirectory(File parentDirectory) {
if(foundFolder) {
return;
}
File[] files = parentDirectory.listFiles();
for (File file : files) {
if (file.isFile()) {
continue;
}
if (file.getName().equals("folderNameToFind")) {
foundFolder = true;
break;
}
if(file.isDirectory()) {
findDirectory(file);
}
}
}
}
このメソッドは再利用できない(いくつかのユーティリティクラスに移動すると動作しない)、つまり一度だけフォルダを検出でき、一度検出された 'foundFolder'はtrueのままであることがわかりますか? –
に応えるべきで述べたように:
Optional<Path> hit = Files.walk(myPath)
.filter(file -> file.getFileName().equals(myName))
.findAny();
#walkは、怠惰ですどんなshort-circuiting terminal operationでも必要なIOを最適化します。
これは 'Path.getFileName'の' java.nio.Path'を 'String'と比較します。私は 'file.getFileName()。toFile.getName()'がこれが複雑で多分高価かもしれないことを知っていることをお勧めします。 –
それとも、それが発見されるまでは、ファイルを検索再帰的という概念を使用する必要があります。ここではコードです:
String name; //to hold the search file name
public String listFolder(File dir) {
int flag;
File[] subDirs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
System.out.println("File of Directory: " + dir.getAbsolutePath());
flag = Listfile(dir);
if (flag == 0) {
System.out.println("File Found in THe Directory: " + dir.getAbsolutePath());
Speak("File Found in THe Directory: !!" + dir.getAbsolutePath());
return dir.getAbsolutePath();
}
for (File folder : subDirs) {
listFolder(folder);
}
return null;
}
private int Listfile(File dir) {
boolean ch = false;
File[] files = dir.listFiles();
for (File file : files) {
Listfile(file);
if (file.getName().indexOf(name.toLowerCase()) != -1) {//check all in lower case
System.out.println(name + "Found Sucessfully!!");
ch = true;
}
}
if (ch) {
return 1;
} else {
return 0;
}
}
- 1. サブディレクトリを再帰的に検索し、ディレクトリを無視するPHP
- 2. ディレクトリ内のファイルを再帰的に検索する
- 3. C#でルートディレクトリを持つディレクトリを再帰的に検索
- 4. 検索ディレクトリパス(再帰的)に一致するディレクトリ名
- 5. 再帰的なディレクトリ検索のXMLマッピングを生成する
- 6. Java再帰的なディレクトリ検索でNullポインタの例外がスローされる
- 7. Double Linked List Javaを再帰的に検索する
- 8. Javaでの拡張子とワイルドカード検索による再帰的なファイル検索
- 9. 再帰的なSQL検索
- 10. ファイルの再帰的検索
- 11. Mongodb再帰的検索
- 12. 再帰的に検索ファイルのバッチファイルで
- 13. 現在のディレクトリではないファイルを再帰的に検索する
- 14. ディレクトリ内でもっとも古いファイルを(再帰的に)検索する
- 15. 他のディレクトリへの再帰的な検索とコピー
- 16. 再帰的に特定の名前でディレクトリを検索し、それらに
- 17. 再帰的一致を返す文字列検索アルゴリズム - Java
- 18. Javaの再帰的ディレクトリ一覧
- 19. Java - パラメータなしでバイナリ検索ツリーを再帰的にトラバースする方法
- 20. Javaバイナリ検索ツリー - 再帰ボイドコピー方法
- 21. Coqでリストを再帰的に検索する
- 22. 再帰的にディレクトリを作成する
- 23. MEF再帰的なプラグインの検索
- 24. バイナリ検索ツリー再帰的な追加
- 25. JSoup Selectタグ再帰的検索
- 26. MongoDBのコレクションの再帰的検索
- 27. クワッドツリーの再帰的な検索
- 28. 再帰的な単語検索アルゴリズム
- 29. XPath:再帰的祖先検索
- 30. Python辞書の再帰的な検索
は[あなたは何を試してみました?](http://www.whathaveyoutried.com/)または、むしろ、考えることができる最良の2(肩をすくめた)アプローチを試すことに基づいて、あなたの理論は何ですか?あるいは、この質問は実際には「あなたは私にコードを教えてもらえますか?」という意味ですか? –