---
title: "open | Grafana k6 documentation"
description: "open opens a file and returns a promise resolving to a File instance."
---

# open

The `open` function opens a file and returns a promise that resolves to a [File](/docs/k6/latest/javascript-api/k6-experimental/fs/file/) instance. Unlike the traditional [open](/docs/k6/latest/javascript-api/init-context/open/) function, which loads a file multiple times into memory, the filesystem module reduces memory usage by loading the file as little possible, and sharing the same memory space between all VUs. This approach reduces the risk of encountering out-of-memory errors, especially in load tests involving large files.

## Parameters

Expand table

| Parameter | Type   | Description                                                                          |
|-----------|--------|--------------------------------------------------------------------------------------|
| path      | string | The path to the file to open. Relative paths are resolved relative to the k6 script. |

## Returns

A promise resolving to a [File](/docs/k6/latest/javascript-api/k6-experimental/fs/file/) instance.

## Example

JavaScript ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```javascript
import { open } from 'k6/experimental/fs';

// k6 doesn't support async in the init context. We use a top-level async function for `await`.
//
// Each Virtual User gets its own `file` copy.
// So, operations like `seek` or `read` won't impact other VUs.
const file = await open('bonjour.txt');

export default async function () {
  // About information about the file
  const fileinfo = await file.stat();
  if (fileinfo.name != 'bonjour.txt') {
    throw new Error('Unexpected file name');
  }

  console.log(JSON.stringify(fileinfo));
}
```
