# Метод copyFile

Метод `copyFile` копирует содержимое выбранного файла в новый документ. В первом параметре указывается исходный файл, во втором параметре - куда его копируем, в третьем необязательном параметре - режим копирования. В четвертом необязательном параметре задаем коллбэк.

## Синтаксис

`fs.copyFile(исходный файл, куда копируем, [модификаторы], [коллбэк]);`

## Режимы копирования

Режим | Описание
--- | ---
`fs.constants.COPYFILE_EXCL` | Указывает на то, что если имя файла назначения уже существует операция копирования завершится неудачно.
`fs.constants.COPYFILE_FICLONE` | Указывает на то, что при копировании будет сделана попытка создать ссылку копирования-записи. Если платформа не поддерживает копирование при записи, то будет использован механизм резервного копирования.
`fs.constants.COPYFILE_FICLONE_FORCE` | Указывает на то, что при копировании будет сделана попытка создать ссылку копирования-записи. Если платформа не поддерживает копирование при записи, то операция завершится неудачно.

## Пример

Давайте асинхронно скопируем файл через `await`:

`import fs from 'fs/promises'; try { let data = await fs.copyFile('file1.txt', 'file2.txt'); console.log(data); } catch (err) { console.log(err); }`

## Пример

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

`import fs from 'fs/promises'; fs.copyFile('file1.txt', 'file2.txt').then(data => { console.log(data); }).catch(err => { console.log(err); });`

## Пример

Давайте асинхронно скопируем файл через коллбэк:

`import fs from 'fs'; fs.copyFile('file1.txt', 'file2.txt', function(err, data) { if (!err) { console.log(data); } else { console.log(err); } });`

## Пример

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

`import fs from 'fs'; try { let text = fs.copyFileSync('file1.txt', 'file2.txt'); console.log(text); } catch (err) { console.log(err); }`

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

- метод `cp`,
  который копирует папку
- метод `appendFile`,
  который добавляет данные в файл

← →
↑