Safe Haskell | None |
---|
Functions for interacting with bytes.
- sourceFile :: MonadResource m => FilePath -> Producer m ByteString
- sourceHandle :: MonadIO m => Handle -> Producer m ByteString
- sourceIOHandle :: MonadResource m => IO Handle -> Producer m ByteString
- sourceFileRange :: MonadResource m => FilePath -> Maybe Integer -> Maybe Integer -> Producer m ByteString
- sourceHandleRange :: MonadIO m => Handle -> Maybe Integer -> Maybe Integer -> Producer m ByteString
- sinkFile :: MonadResource m => FilePath -> Consumer ByteString m ()
- sinkHandle :: MonadIO m => Handle -> Consumer ByteString m ()
- sinkIOHandle :: MonadResource m => IO Handle -> Consumer ByteString m ()
- conduitFile :: MonadResource m => FilePath -> Conduit ByteString m ByteString
- conduitHandle :: MonadIO m => Handle -> Conduit ByteString m ByteString
- sourceLbs :: Monad m => ByteString -> Producer m ByteString
- head :: Monad m => Consumer ByteString m (Maybe Word8)
- dropWhile :: Monad m => (Word8 -> Bool) -> Consumer ByteString m ()
- take :: Monad m => Int -> Consumer ByteString m ByteString
- drop :: Monad m => Int -> Consumer ByteString m ()
- sinkCacheLength :: (MonadResource m1, MonadResource m2) => Sink ByteString m1 (Word64, Source m2 ByteString)
- sinkLbs :: Monad m => Sink ByteString m ByteString
- isolate :: Monad m => Int -> Conduit ByteString m ByteString
- takeWhile :: Monad m => (Word8 -> Bool) -> Conduit ByteString m ByteString
- lines :: Monad m => Conduit ByteString m ByteString
Files and Handle
s
Note that most of these functions live in the MonadResource
monad
to ensure resource finalization even in the presence of exceptions. In
order to run such code, you will need to use runResourceT
.
Sources
sourceFile :: MonadResource m => FilePath -> Producer m ByteStringSource
Stream the contents of a file as binary data.
Since 0.3.0
sourceHandle :: MonadIO m => Handle -> Producer m ByteStringSource
Stream the contents of a Handle
as binary data. Note that this
function will not automatically close the Handle
when processing
completes, since it did not acquire the Handle
in the first place.
Since 0.3.0
sourceIOHandle :: MonadResource m => IO Handle -> Producer m ByteStringSource
An alternative to sourceHandle
.
Instead of taking a pre-opened Handle
, it takes an action that opens
a Handle
(in read mode), so that it can open it only when needed
and closed it as soon as possible.
Since 0.3.0
:: MonadResource m | |
=> FilePath | |
-> Maybe Integer | Offset |
-> Maybe Integer | Maximum count |
-> Producer m ByteString |
Stream the contents of a file as binary data, starting from a certain offset and only consuming up to a certain number of bytes.
Since 0.3.0
:: MonadIO m | |
=> Handle | |
-> Maybe Integer | Offset |
-> Maybe Integer | Maximum count |
-> Producer m ByteString |
Stream the contents of a handle as binary data, starting from a certain offset and only consuming up to a certain number of bytes.
Since 1.0.8
Sinks
sinkFile :: MonadResource m => FilePath -> Consumer ByteString m ()Source
Stream all incoming data to the given file.
Since 0.3.0
sinkHandle :: MonadIO m => Handle -> Consumer ByteString m ()Source
Stream all incoming data to the given Handle
. Note that this function
will not automatically close the Handle
when processing completes.
Since 0.3.0
sinkIOHandle :: MonadResource m => IO Handle -> Consumer ByteString m ()Source
An alternative to sinkHandle
.
Instead of taking a pre-opened Handle
, it takes an action that opens
a Handle
(in write mode), so that it can open it only when needed
and close it as soon as possible.
Since 0.3.0
Conduits
conduitFile :: MonadResource m => FilePath -> Conduit ByteString m ByteStringSource
Stream the contents of the input to a file, and also send it along the
pipeline. Similar in concept to the Unix command tee
.
Since 0.3.0
conduitHandle :: MonadIO m => Handle -> Conduit ByteString m ByteStringSource
Stream the contents of the input to a Handle
, and also send it along the
pipeline. Similar in concept to the Unix command tee
. Like sourceHandle
,
does not close the handle on completion. Related to: conduitFile
.
Since 1.0.9
Utilities
Sources
sourceLbs :: Monad m => ByteString -> Producer m ByteStringSource
Stream the chunks from a lazy bytestring.
Since 0.5.0
Sinks
head :: Monad m => Consumer ByteString m (Maybe Word8)Source
Return the next byte from the stream, if available.
Since 0.3.0
dropWhile :: Monad m => (Word8 -> Bool) -> Consumer ByteString m ()Source
Ignore all bytes while the predicate returns True
.
Since 0.3.0
take :: Monad m => Int -> Consumer ByteString m ByteStringSource
Take the given number of bytes, if available.
Since 0.3.0
drop :: Monad m => Int -> Consumer ByteString m ()Source
Drop up to the given number of bytes.
Since 0.5.0
sinkCacheLength :: (MonadResource m1, MonadResource m2) => Sink ByteString m1 (Word64, Source m2 ByteString)Source
Stream the input data into a temp file and count the number of bytes
present. When complete, return a new Source
reading from the temp file
together with the length of the input in bytes.
All resources will be cleaned up automatically.
Since 1.0.5
sinkLbs :: Monad m => Sink ByteString m ByteStringSource
Consume a stream of input into a lazy bytestring. Note that no lazy I/O is performed, but rather all content is read into memory strictly.
Since 1.0.5
Conduits
isolate :: Monad m => Int -> Conduit ByteString m ByteStringSource
Ensure that only up to the given number of bytes are consume by the inner sink. Note that this does not ensure that all of those bytes are in fact consumed.
Since 0.3.0
takeWhile :: Monad m => (Word8 -> Bool) -> Conduit ByteString m ByteStringSource
Return all bytes while the predicate returns True
.
Since 0.3.0
lines :: Monad m => Conduit ByteString m ByteStringSource
Split the input bytes into lines. In other words, split on the LF byte (10), and strip it from the output.
Since 0.3.0