gpt4 book ai didi

haskell - 在 Haskell 中检索文件大小的 hFileSize 更快替代方案?

转载 作者:行者123 更新时间:2023-12-02 08:59:55 25 4
gpt4 key购买 nike

我想知道如何以最少的开销获取 haskell 中文件的大小。现在我有以下代码:

getFileSize :: FilePath -> IO Integer
getFileSize x = do
handle <- openFile x ReadMode
size <- hFileSize handle
hClose handle
return size

这似乎很慢。我在 System.Posix.Files 中偶然发现了 getFileStatus,但不知道它是如何工作的 - 至少我只在 ghci 中使用它时遇到错误。另外,我不确定这是否适用于 Windows(可能不会)。

重申一下:在 Haskell 中获取文件大小的最佳(且与平台无关)方法是什么?

最佳答案

您想要的确实是 getFileStatusfileSize,两者都来自 System.Posix(如果您使用,它们在 Windows 下工作得很好) unix-compat 包而不是 unix)。用法如下,错误处理由您决定:

getFileSize :: String -> IO Integer
getFileSize path = do
stat <- getFileStatus path
return $ fromIntegral (fileSize stat)

就其值(value)而言,虽然我认为它的可读性较差,但您可以将此表单缩短为:

getFileSize path = getFileStatus path >>= \s -> return $ fileSize s

关于haskell - 在 Haskell 中检索文件大小的 hFileSize 更快替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5620332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com