# Read a file as a ReadableStream (/docs/guides/read-file/stream)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 179 · updated: 2026-07-28 -->
Related: [Read a file to an ArrayBuffer](/docs/guides/read-file/arraybuffer.md), [Read a file to a Buffer](/docs/guides/read-file/buffer.md), [Check if a file exists](/docs/guides/read-file/exists.md), [Read a JSON file](/docs/guides/read-file/json.md), [Get the MIME type of a file](/docs/guides/read-file/mime.md), [Read a file as a string](/docs/guides/read-file/string.md)

The `Bun.file()` function accepts a path and returns a `BunFile` instance. `BunFile` extends `Blob`, so you can read the file lazily in a variety of formats. Use `.stream()` to consume the file incrementally as a `ReadableStream`.

```ts
const path = "/path/to/package.json";
const file = Bun.file(path);

const stream = file.stream();
```

***

The stream is an [async iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols), so you can read its chunks with `for await`.

```ts
for await (const chunk of stream) {
  chunk; // => Uint8Array
}
```

***

See [Streams](/runtime/streams) for more on working with streams in Bun.
