如何获取某个文件夹的所有子文件夹?我会使用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