有沒有辦法用目標文件的絕對路徑返回目錄中的文件列表。Haskell中的目錄內容
當我做
getDirectoryContents dir
它給我的目錄文件名列表。如果我在其他地方使用這些文件名,我需要知道它們的絕對路徑或相對於當前工作目錄的路徑。
有沒有辦法用目標文件的絕對路徑返回目錄中的文件列表。Haskell中的目錄內容
當我做
getDirectoryContents dir
它給我的目錄文件名列表。如果我在其他地方使用這些文件名,我需要知道它們的絕對路徑或相對於當前工作目錄的路徑。
getAbsDirectoryContents :: FilePath -> IO [FilePath]
getAbsDirectoryContents dir =
getDirectoryContents dir >>= mapM (canonicalizePath . (dir </>))
這使用System.Directory.canonicalizePath,並且(如果你打電話getAbsDirectoryContents "foo"
,然後在文件系統中移動到別處例如)即使dir
不是絕對路徑工程。
如果你知道dir
是絕對路徑,你可以改用:
getAbsDirectoryContents :: FilePath -> IO [FilePath]
getAbsDirectoryContents dir = map (dir </>) <$> getDirectoryContents dir
它採用System.FilePath.(</>),並且可能會快一點。
import System.Directory (getDirectoryContents)
import System.FilePath ((</>))
getAbsoluteDirContents :: String -> IO [FilePath]
getAbsoluteDirContents dir = do
contents <- getDirectoryContents dir
return $ map (dir </>) contents
可能是值得注意的是,此解決方案的工作,你需要導入System.FilePath(>)和Data.Functor(<$>) – 2012-02-18 23:14:00