hFileSize的快速替代品,可在Haskell中检索文件的大小?

问题描述 投票:8回答:4

我想知道如何以最少的开销获得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 =做处理

haskell filesystems io
4个回答
12
投票

您想要的确实是getFileStatusfileSize,都来自System.Posix(如果使用unix-compat包而不是unix,则在Windows下也可以正常工作)。用法如下,由您自己进行错误处理:


8
投票

我不知道是否有更好的方法。 RWH为hFileSize提供自己的包装器:


1
投票

似乎System.Posix.Files在Windows中不起作用(在Cygwin中除外,您尝试过unix-compat吗?


1
投票
import System.Posix.Files
import System.Posix.Types

getFileSize :: FilePath -> IO FileOffset
getFileSize path = fmap fileSize $ getFileStatus path
© www.soinside.com 2019 - 2024. All rights reserved.