我已经习惯zipSinks :: Monad m => Sink i m r -> Sink i m r' -> Sink i m (r, r')了这个,但它被认为已被弃用了.
我想从zip存档中的第一个文件中获取前五个字节.我使用zip-archive包进行解压缩:
import qualified Data.ByteString.Lazy as L
import Data.Maybe
import System.Environment (getArgs)
import Codec.Archive.Zip
main = do
f:_ <- getArgs
print . L.take 5 . fromEntry . head . zEntries . toArchive =<< L.readFile f
Run Code Online (Sandbox Code Playgroud)
这段代码适用于小型档案,但我有大堆溢出的堆.例如:
./zip-arch test.zip +RTS -p -hy -M100M
Run Code Online (Sandbox Code Playgroud)