我只是想知道我是否可以使用System.Directory包中的任何特定方法或某些东西来获取给定指定路径的所有嵌套目录的列表。我没有找到任何合适的功能,所以我想出了类似的东西:
getDirList :: FilePath -> IO [FilePath]
getDirList dir = do
contents <- getDirectoryContents dir
all <- mapM (return . (dir </>)) $ filter (\f -> f /= "." && f /= "..") contents
dirs <- filterM doesDirectoryExist all
dirs' <- mapM getDirList dirs
return (dir : concat dirs')
可能我错过了一些非常简单的事情吗?谁有人建议?谢谢。
答案 0 :(得分:1)
如果可以使用filemanip包:
import System.FilePath.Find
getDirList dir = find always (fileType ==? Directory) dir