# Метод open

Метод `open` открывает файл и возвращает объект класса `FileHandle`. В первом параметре метода указывается путь к файлу, который мы хотим открыть. Во втором необязательном параметре задаем флаг - это строка или число, которое указывает операцию, в которой файл должен быть открыт. По умолчанию флаг равен `'r'`. В третьем необязательном параметре можно задать режим взаимодействия с файлом, по умолчанию он равен `'чтение-запись'`. В четвертом необязательном параметре указываем коллбэк, который в свою очередь принимает параметры `err` (ошибка) и `fd` (файловый дескриптор).

## Синтаксис

`fs.open(путь к файлу, [флаги], [режим], [коллбэк]);`

## Пример

Давайте асинхронно откроем файл через `await`, а затем с помощью метода `FileHandle.readFile` прочитаем его содержимое:

`import fs from 'fs/promises'; try { let filehandle = await fs.open('file.txt'); let data = await filehandle.readFile('utf-8') console.log(data); } catch (err) { console.log(err); }`

## Пример

Теперь давайте асинхронно откроем и прочитаем файл через `then`:

`import fs from 'fs/promises'; fs.open('file.txt').then((filehandle) => { filehandle.readFile('utf-8').then(data => { console.log(data); }) }).catch((err) => { console.log(err); });`

## Пример

Давайте асинхронно откроем и прочитаем файл из предыдущих примеров через коллбэк. Вначале мы создаем буфер, а затем через параметр коллбэка `fd` прочитаем содержимое файла:

`import fs from 'fs'; const buffer = new Buffer.alloc(1024); fs.open('file.txt', function(err, fd) { if (!err) { fs.readSync(fd, buffer); let data = buffer.toString('utf8'); console.log(data); } else { console.log(err); } });`

## Пример

Теперь давайте синхронно откроем и прочитаем файл через `openSync`:

`import fs from 'fs'; let fileDescriptor = fs.openSync('file.txt'); const buffer = new Buffer.alloc(1024); try { fs.readSync(fileDescriptor, buffer); let data = buffer.toString('utf8'); console.log(data); } catch (err) { console.log(err); }`

## Смотрите также

- метод `opendir`,
  который открывает папку
- метод `createReadStream`,
  открывает поток для чтения данных
- метод `createWriteStream`,
  который открывает поток для записи данных
- метод `closeSync`,
  который синхронно закрывает файловый дескриптор

← →
↑