如何獲取某個文件夾的所有子文件夾?我會使用JDK 8和nio。Java nio,獲取某個文件夾的所有子文件夾
例如,文件夾 「Designs.ipj」 方法應該返回{ 「工作區」, 「分享幫助」}
預先感謝您!
如何獲取某個文件夾的所有子文件夾?我會使用JDK 8和nio。Java nio,獲取某個文件夾的所有子文件夾
例如,文件夾 「Designs.ipj」 方法應該返回{ 「工作區」, 「分享幫助」}
預先感謝您!
List<Path> subfolder = Files.walk(folderPath, 1)
.filter(Files::isDirectory)
.collect(Collectors.toList());
它將包含FOLDERPATH和深度1.所有子文件夾如果您只需要子文件夾,只需添加:
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
嗯,你需要這個非阻塞IO嗎? – niceman