То, что вы хотите, - это, действительно, getFileStatus
и fileSize
, оба из System.Posix
(которые будут отлично работать под Windows, учтите). Использование выглядит следующим образом, оставляя обработку ошибок до вас:
getFileSize :: String -> IO FileOffset
getFileSize path = do
stat <- getFileStatus path
return (fileSize stat)
Для чего это стоит, и хотя я думаю, что это менее читабельно, вы можете сократить эту форму до:
getFileSize path = getFileStatus path >>= \s -> return $ fileSize s