System.IO.Streams.Handle

io-streams-1.5.2.2: Simple, composable, and easy-to-use stream I/O

Safe Haskell | Trustworthy
Language | Haskell2010

System.IO.Streams.Handle

Contents

- Handle conversions
- Standard system handles

Description

Input and output streams for file `Handle`s.

Synopsis

- handleToInputStream :: Handle -> IO (InputStream ByteString)
- handleToOutputStream :: Handle -> IO (OutputStream ByteString)
- handleToStreams :: Handle -> IO (InputStream ByteString, OutputStream ByteString)
- inputStreamToHandle :: InputStream ByteString -> IO Handle
- outputStreamToHandle :: OutputStream ByteString -> IO Handle
- streamPairToHandle :: InputStream ByteString -> OutputStream ByteString -> IO Handle
- stdin :: InputStream ByteString
- stdout :: OutputStream ByteString
- stderr :: OutputStream ByteString

# Handle conversions

handleToInputStream :: Handle -> IO (InputStream ByteString) #

Converts a read-only handle into an `InputStream` of strict `ByteString`s.

Note that the wrapped handle is not closed when it yields end-of-stream; you can use `atEndOfInput` to close the handle if you would like this behaviour.

handleToOutputStream :: Handle -> IO (OutputStream ByteString) #

Converts a writable handle into an `OutputStream` of strict `ByteString`s.

Note that the wrapped handle is not closed when it receives end-of-stream; you can use `atEndOfOutput` to close the handle if you would like this behaviour.

Note: to force the `Handle` to be flushed, you can write a null string to the returned `OutputStream`:

    Streams.write (Just "") os

handleToStreams :: Handle -> IO (InputStream ByteString, OutputStream ByteString) #

Converts a readable and writable handle into an `InputStream`/`OutputStream` of strict `ByteString`s.

Note that the wrapped handle is not closed when it receives end-of-stream; you can use `atEndOfOutput` to close the handle if you would like this behaviour.

Note: to force the `Handle` to be flushed, you can write a null string to the returned `OutputStream`:

    Streams.write (Just "") os

Since: 1.3.4.0.

inputStreamToHandle :: InputStream ByteString -> IO Handle #

Converts an `InputStream` over bytestrings to a read-only `Handle`. Note that the generated handle is opened unbuffered in binary mode (i.e. no newline translation is performed).

Note: the `InputStream` passed into this function is wrapped in `lockingInputStream` to make it thread-safe.

Since: 1.0.2.0.

outputStreamToHandle :: OutputStream ByteString -> IO Handle #

Converts an `OutputStream` over bytestrings to a write-only `Handle`. Note that the `Handle` will be opened in non-buffering mode; if you buffer the `OutputStream` using the `Handle` buffering then `io-streams` will copy the `Handle` buffer when sending `ByteString` values to the output, which might not be what you want.

When the output buffer, if used, is flushed (using `hFlush`), an empty string is written to the provided `OutputStream`.

Note: the `OutputStream` passed into this function is wrapped in `lockingOutputStream` to make it thread-safe.

Since: 1.0.2.0.

streamPairToHandle :: InputStream ByteString -> OutputStream ByteString -> IO Handle #

Converts a pair of `InputStream` and `OutputStream` over bytestrings to a read-write `Handle`.

Note: the streams passed into this function are wrapped in locking primitives to make them thread-safe.

Since: 1.0.2.0.

# Standard system handles

stdin :: InputStream ByteString #

An `InputStream` for `stdin`.

stdout :: OutputStream ByteString #

An `OutputStream` for `stdout`.

stderr :: OutputStream ByteString #

An `OutputStream` for `stderr`.