---
title: "File | Grafana k6 documentation"
description: "File represents a file with methods for reading, seeking, and obtaining file stats."
---

# File

The `File` class represents a file with methods for reading, seeking, and obtaining file stats. It’s returned by the [open](/docs/k6/next/javascript-api/init-context/open/) function.

## Properties

Expand table

| Property | Type   | Description                    |
|----------|--------|--------------------------------|
| path     | string | The absolute path to the file. |

## Methods

Expand table

| Method                                                             | Description                                                                                                                                    |
|--------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| [read](/docs/k6/next/javascript-api/k6-experimental/fs/file/read/) | Reads up to `buffer.byteLength` bytes from the file into the passed `buffer`. Returns a promise resolving to the number of bytes read.         |
| [seek](/docs/k6/next/javascript-api/k6-experimental/fs/file/seek/) | Sets the file position indicator for the file to the passed `offset` bytes. Returns a promise resolving to the new offset.                     |
| [stat](/docs/k6/next/javascript-api/k6-experimental/fs/file/stat/) | Returns a promise resolving to a [FileInfo](/docs/k6/next/javascript-api/k6-experimental/fs/fileinfo/) object with information about the file. |

## Example

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

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

const file = await open('bonjour.txt');

export default async function () {
  // Seek to the beginning of the file
  await file.seek(0, SeekMode.Start);

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

  const buffer = new Uint8Array(4);

  let totalBytesRead = 0;
  while (true) {
    // Read into the buffer
    const bytesRead = await file.read(buffer);
    if (bytesRead == null) {
      // EOF
      break;
    }

    // Do something useful with the content of the buffer
    totalBytesRead += bytesRead;

    // If bytesRead is less than the buffer size, we've read the whole file
    if (bytesRead < buffer.byteLength) {
      break;
    }
  }

  // Check that we read the expected number of bytes
  if (totalBytesRead != fileinfo.size) {
    throw new Error('Unexpected number of bytes read');
  }
}
```
