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. (</>) и может быть немного быстрее.