# `IO.Stream`
[🔗](https://github.com/elixir-lang/elixir/blob/v1.20.0-rc.3/lib/elixir/lib/io/stream.ex#L14)

Defines an `IO.Stream` struct returned by `IO.stream/2` and `IO.binstream/2`.

The following fields are public:

  * `device`        - the IO device
  * `raw`           - a boolean indicating if bin functions should be used
  * `line_or_bytes` - if reading should read lines or a given number of bytes

It is worth noting that an IO stream has side effects and every time you go
over the stream you may get different results.

# `t`

```elixir
@type t() :: %IO.Stream{
  device: IO.device(),
  line_or_bytes: :line | non_neg_integer(),
  raw: boolean()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
