どのようにいくつかのフォルダのすべてのサブフォルダを取得できますか?私はJDK 8とnioを使用します。例えばJava nio、いくつかのフォルダのすべてのサブフォルダを取得
、フォルダ "Designs.ipj" 方法は{ "ワークスペース"、 "ライブラリ1を"}返す必要があります
は、事前にありがとうございます!
どのようにいくつかのフォルダのすべてのサブフォルダを取得できますか?私はJDK 8とnioを使用します。例えばJava nio、いくつかのフォルダのすべてのサブフォルダを取得
、フォルダ "Designs.ipj" 方法は{ "ワークスペース"、 "ライブラリ1を"}返す必要があります
は、事前にありがとうございます!
List<Path> subfolder = Files.walk(folderPath, 1)
.filter(Files::isDirectory)
.collect(Collectors.toList());
それはあなただけのサブフォルダが必要な場合は、深さ1にFOLDERPATHとすべてのサブフォルダが含まれているだけで追加します。
subfolders.remove(0);
ありがとうございました! –
あなたは、フォルダ内のすべての項目を読んで、ディレクトリを除外する必要があり、このプロセスを必要な回数だけ繰り返す。このおLISTFILESを(使用することができますを行うには
)
File folder = new File("your/path");
Stack<File> stack = new Stack<File>();
Stack<File> folders = new Stack<File>();
stack.push(folder);
while(!stack.isEmpty())
{
File child = stack.pop();
File[] listFiles = child.listFiles();
folders.push(child);
for(File file : listFiles)
{
if(file.isDirectory())
{
stack.push(file);
}
}
}
は Getting the filenames of all files in a folder は単純な再帰関数は単に無限ループを警戒していることを確認し、また働くだろう参照してください。
しかし、私はもう少しDirectoryStreamに部分的です。これにより、仕様に合った項目だけを追加できるようにフィルタを作成することができます。
DirectoryStream.Filter<Path> visibleFilter = new DirectoryStream.Filter<Path>()
{
@Override
public boolean accept(Path file)
{
try
{
return Files.isDirectory(file));
}
catch(IOException e)
{
e.printStackTrace();
}
return false;
}
try(DirectoryStream<Path> stream = Files.newDirectoryStream(directory.toPath(), visibleFilter))
{
for(Path file : stream)
{
folders.push(child);
}
}
あなたの投稿を編集し、あなたの質問に画像を含める必要があります。最終的に、外部リンクはある時点では利用できなくなり、将来のユーザーはあなたの質問から恩恵を受けることができなくなります。 – Andrej
https://docs.oracle.com/javase/tutorial/essential/io/dirs.html#listdir – Fildor
hmmmこれにはノンブロッキングIOが必要ですか? – niceman