我想知道如何以最少的开销获得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中获取文件大小的最佳方法(与平台无关)是什么?>>
我想知道如何以最少的开销获得haskell中文件的大小。现在,我有以下代码:getFileSize :: FilePath-> IO整数getFileSize x =做处理
您想要的确实是getFileStatus
和fileSize
,都来自System.Posix
(如果使用unix-compat包而不是unix
,则在Windows下也可以正常工作)。用法如下,由您自己进行错误处理:
我不知道是否有更好的方法。 RWH为hFileSize提供自己的包装器:
似乎System.Posix.Files在Windows中不起作用(在Cygwin中除外,您尝试过unix-compat吗?
import System.Posix.Files
import System.Posix.Types
getFileSize :: FilePath -> IO FileOffset
getFileSize path = fmap fileSize $ getFileStatus path