Ответ 1
getAbsDirectoryContents :: FilePath -> IO [FilePath]
getAbsDirectoryContents dir =
getDirectoryContents dir >>= mapM (canonicalizePath . (dir </>))
Это использует System.Directory.canonicalizePath и работает, даже если dir
не является абсолютным путем (например, если вы вызываете getAbsDirectoryContents "foo"
а затем переместить в другое место в файловой системе).
Если вы знаете, что dir
- это абсолютный путь, вы можете использовать:
getAbsDirectoryContents :: FilePath -> IO [FilePath]
getAbsDirectoryContents dir = map (dir </>) <$> getDirectoryContents dir
который использует System.FilePath. (</gt) и может быть немного быстрее.