fs/promises
API fs/promises предоставляет асинхронные методы файловой системы, возвращающие промисы.
API промисов использует пул потоков Node.js для выполнения операций с файловой системой вне потока цикла событий. Эти операции не синхронизированы и не являются потокобезопасными. При одновременном выполнении нескольких изменений одного и того же файла следует соблюдать осторожность, иначе может произойти повреждение данных.
Использование в Deno
import * as mod from "node:fs/promises";
функция access
Использование в Deno
import { access } from "node:fs/promises";
access(
path: PathLike,
mode?: number,
): Promise<void>Проверяет разрешения пользователя для файла или каталога, указанного в path. Аргумент mode — необязательное целое число, задающее проверки доступности, которые необходимо выполнить. mode должен быть либо значением fs.constants.F_OK, либо маской, состоящей из побитового ИЛИ любых значений из fs.constants.R_OK, fs.constants.W_OK и fs.constants.X_OK (например, fs.constants.W_OK | fs.constants.R_OK). Возможные значения mode см. в File access constants.
Если проверка доступности выполнена успешно, промис выполняется без значения. Если какая-либо из проверок доступности завершается неудачей, промис отклоняется с объектом Error. В следующем примере проверяется, можно ли прочитать файл/etc/passwd и записать в него данные из текущего процесса.
import { access, constants } from 'node:fs/promises';
try {
await access('/etc/passwd', constants.R_OK | constants.W_OK);
console.log('can access');
} catch {
console.error('cannot access');
}
Не рекомендуется использовать fsPromises.access() для проверки доступности файла перед вызовом fsPromises.open(). Это приводит к состоянию гонки, поскольку другие процессы могут изменить состояние файла между двумя вызовами. Вместо этого пользовательский код должен напрямую открывать, читать и записывать файл, а также обрабатывать ошибку, возникающую, если файл недоступен.
Параметры
path: PathLike mode: number = fs.constants.F_OK Тип возвращаемого значения
Promise<void> При успешном выполнении возвращает undefined.
функция appendFile
Использование в Deno
import { appendFile } from "node:fs/promises";
appendFile(): Promise<void>Асинхронно добавляет данные в файл, создавая его, если он ещё не существует. data может быть строкой или Buffer.
Если options является строкой, она задаёт encoding.
Параметр mode влияет только на вновь созданный файл. Подробнее см. в fs.open().
В качестве path можно указать FileHandle, открытый для добавления данных (с помощью fsPromises.open()).
Параметры
path: PathLike | FileHandle имя файла или {FileHandle}
data: string | Uint8Array options:
()
| BufferEncoding
| null
Тип возвращаемого значения
Promise<void> При успешном выполнении возвращает undefined.
функция chown
Использование в Deno
import { chown } from "node:fs/promises";
функция copyFile
Использование в Deno
import { copyFile } from "node:fs/promises";
copyFile(): Promise<void>Асинхронно копирует src в dest. По умолчанию, если dest уже существует, он перезаписывается.
Атомарность операции копирования не гарантируется. Если после открытия целевого файла для записи произойдёт ошибка, будет предпринята попытка удалить целевой файл.
import { copyFile, constants } from 'node:fs/promises';
try {
await copyFile('source.txt', 'destination.txt');
console.log('source.txt was copied to destination.txt');
} catch {
console.error('The file could not be copied');
}
// By using COPYFILE_EXCL, the operation will fail if destination.txt exists.
try {
await copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL);
console.log('source.txt was copied to destination.txt');
} catch {
console.error('The file could not be copied');
}
Параметры
src: PathLike имя исходного файла для копирования
dest: PathLike имя целевого файла для операции копирования
mode: number = 0 Необязательные модификаторы, задающие поведение операции копирования. Можно создать маску, состоящую из побитового ИЛИ двух или более значений (например, fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE)
Тип возвращаемого значения
Promise<void> При успешном выполнении возвращает undefined.
функция cp
Использование в Deno
import { cp } from "node:fs/promises";
cp(): Promise<void>Асинхронно копирует всю структуру каталогов из src в dest, включая подкаталоги и файлы.
При копировании каталога в другой каталог шаблоны glob не поддерживаются, а поведение аналогично cp dir1/ dir2/.
Параметры
Тип возвращаемого значения
Promise<void> При успешном выполнении возвращает undefined.
функция glob
Использование в Deno
import { glob } from "node:fs/promises";
Вариант 1
glob(pattern: string | string[]): AsyncIterator<string>Возвращает файлы, соответствующие указанному шаблону.
Параметры
pattern: string | string[] Тип возвращаемого значения
AsyncIterator<string> Вариант 2
glob(
pattern: string | string[],
opt: GlobOptionsWithFileTypes,
): AsyncIterator<Dirent>Параметры
pattern: string | string[] Тип возвращаемого значения
AsyncIterator<Dirent> Вариант 3
glob(
pattern: string | string[],
): AsyncIterator<string>Параметры
pattern: string | string[] Тип возвращаемого значения
AsyncIterator<string> Вариант 4
glob(
pattern: string | string[],
opt: GlobOptions,
): AsyncIterator<Dirent | string>Параметры
pattern: string | string[] opt: GlobOptions Тип возвращаемого значения
AsyncIterator<Dirent | string> функция lchown
Использование в Deno
import { lchown } from "node:fs/promises";
функция lstat
Использование в Deno
import { lstat } from "node:fs/promises";
Вариант 1
lstat(
path: PathLike,
opts?: StatOptions & { bigint?: false | undefined; },
): Promise<Stats>Эквивалентно fsPromises.stat(), если только path не указывает на символическую ссылку; в этом случае выполняется stat самой ссылки, а не файла, на который она указывает. Дополнительные сведения см. в документе POSIX lstat(2).
Параметры
path: PathLike opts: StatOptions & { bigint?: false | undefined; } Тип возвращаемого значения
Promise<Stats> Возвращает объект {fs.Stats} для указанной символической ссылки path.
Вариант 2
lstat(
path: PathLike,
opts: StatOptions & { bigint: true; },
): Promise<BigIntStats>Параметры
path: PathLike opts: StatOptions & { bigint: true; } Тип возвращаемого значения
Promise<BigIntStats> Вариант 3
lstat(
path: PathLike,
opts?: StatOptions,
): Promise<Stats | BigIntStats>Параметры
path: PathLike opts: StatOptions Тип возвращаемого значения
Promise<Stats | BigIntStats> функция lutimes
Использование в Deno
import { lutimes } from "node:fs/promises";
lutimes(): Promise<void>Изменяет время доступа и время модификации файла так же, как fsPromises.utimes(), за исключением того, что если путь указывает на символическую ссылку, она не разыменовывается: вместо этого изменяются временные метки самой символической ссылки.
Параметры
Тип возвращаемого значения
Promise<void> При успешном выполнении возвращает undefined.
функция mkdir
Использование в Deno
import { mkdir } from "node:fs/promises";
Перегрузка 1
mkdir(
path: PathLike,
options: MakeDirectoryOptions & { recursive: true; },
): Promise<string | undefined>Асинхронно создает каталог.
Необязательный аргумент options может быть целым числом, задающим mode (права доступа и биты sticky), или объектом со свойством mode и свойством recursive, указывающим, следует ли создавать родительские каталоги. Вызов fsPromises.mkdir(), когда path — существующий каталог, приводит к отклонению промиса только в том случае, если recursive имеет значение false.
import { mkdir } from 'node:fs/promises';
try {
const projectFolder = new URL('./test/project/', import.meta.url);
const createDir = await mkdir(projectFolder, { recursive: true });
console.log(`created ${createDir}`);
} catch (err) {
console.error(err.message);
}
Параметры
path: PathLike options: MakeDirectoryOptions & { recursive: true; } Тип возвращаемого значения
Promise<string | undefined> При успешном выполнении возвращает undefined, если recursive имеет значение false, или путь к первому созданному каталогу, если recursive имеет значение true.
Перегрузка 2
mkdir(
path: PathLike,
options?: ,
): Promise<void>Асинхронный mkdir(2) — создание каталога.
Параметры
path: PathLike Путь к файлу. Если указан URL, он должен использовать протокол file:.
options: Режим доступа к файлу или объект, который может задавать режим доступа к файлу и указывать, следует ли создавать родительские каталоги. Если передана строка, она разбирается как восьмеричное целое число. Если значение не указано, по умолчанию используется 0o777.
Тип возвращаемого значения
Promise<void> Перегрузка 3
mkdir(
path: PathLike,
options?: ,
): Promise<string | undefined>Асинхронный mkdir(2) — создание каталога.
Параметры
path: PathLike Путь к файлу. Если указан URL, он должен использовать протокол file:.
options: Режим доступа к файлу или объект, который может задавать режим доступа к файлу и указывать, следует ли создавать родительские каталоги. Если передана строка, она разбирается как восьмеричное целое число. Если значение не указано, по умолчанию используется 0o777.
Тип возвращаемого значения
Promise<string | undefined> функция mkdtemp
Использование в Deno
import { mkdtemp } from "node:fs/promises";
Перегрузка 1
mkdtemp(
prefix: string,
options?: ,
): Promise<string>Создает уникальный временный каталог. Уникальное имя каталога генерируется добавлением шести случайных символов в конец указанного prefix. Из-за различий между платформами не рекомендуется добавлять завершающие символы X в prefix. На некоторых платформах, в частности BSD, может возвращаться более шести случайных символов, а завершающие символы X в prefix могут заменяться случайными символами.
Необязательный аргумент options может быть строкой, задающей кодировку, или объектом со свойством encoding, задающим используемую кодировку символов.
import { mkdtemp } from 'node:fs/promises';
import { join } from 'node:path';
import { tmpdir } from 'node:os';
try {
await mkdtemp(join(tmpdir(), 'foo-'));
} catch (err) {
console.error(err);
}
Метод fsPromises.mkdtemp() добавит шесть случайно выбранных символов непосредственно к строке prefix. Например, если задан каталог /tmp, а временный каталог требуется создать внутри /tmp, строка prefix должна оканчиваться разделителем пути, специфичным для платформы (import { sep } from 'node:path').
Параметры
prefix: string options: Тип возвращаемого значения
Promise<string> Возвращает строку, содержащую путь в файловой системе к созданному временному каталогу.
Перегрузка 2
mkdtemp(
prefix: string,
options: BufferEncodingOption,
): Promise<Buffer>Асинхронно создает уникальный временный каталог. Генерирует шесть случайных символов, которые добавляются после обязательного prefix для создания уникального временного каталога.
Параметры
prefix: string options: BufferEncodingOption Кодировка (или объект, задающий кодировку), используемая для кодирования результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<Buffer> Перегрузка 3
mkdtemp(
prefix: string,
options?: ,
): Promise<string | Buffer>Асинхронно создает уникальный временный каталог. Генерирует шесть случайных символов, которые добавляются после обязательного prefix для создания уникального временного каталога.
Параметры
prefix: string options: Кодировка (или объект, задающий кодировку), используемая для кодирования результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<string | Buffer> функция open
Использование в Deno
import { open } from "node:fs/promises";
open(): Promise<FileHandle>Открывает FileHandle.
Подробнее см. документацию POSIX open(2).
Некоторые символы (< > : " / \ | ? *) зарезервированы в Windows, как описано в разделе Имена файлов, пути и пространства имен. В NTFS, если имя файла содержит двоеточие, Node.js откроет файловый поток, как описано на этой странице MSDN.
Параметры
Тип возвращаемого значения
Promise<FileHandle> Возвращает объект {FileHandle}.
функция opendir
Использование в Deno
import { opendir } from "node:fs/promises";
opendir(
path: PathLike,
options?: OpenDirOptions,
): Promise<Dir>Асинхронно открывает каталог для последовательного просмотра. Подробнее см. документацию POSIX opendir(3).
Создает объект fs.Dir, содержащий все необходимые функции для чтения содержимого каталога и завершения работы с ним.
Параметр encoding задает кодировку для path при открытии каталога и последующих операциях чтения.
Пример использования асинхронной итерации:
import { opendir } from 'node:fs/promises';
try {
const dir = await opendir('./');
for await (const dirent of dir)
console.log(dirent.name);
} catch (err) {
console.error(err);
}
При использовании асинхронного итератора объект fs.Dir будет автоматически закрыт после завершения итератора.
Параметры
path: PathLike options: OpenDirOptions Тип возвращаемого значения
Promise<Dir> Возвращает объект {fs.Dir}.
функция readdir
Использование в Deno
import { readdir } from "node:fs/promises";
Перегрузка 1
readdir(
path: PathLike,
options?:
(ObjectEncodingOptions & { withFileTypes?: false | undefined; recursive?: boolean | undefined; })
| BufferEncoding
| null
,
): Promise<string[]>Читает содержимое каталога.
Необязательный аргумент options может быть строкой, задающей кодировку, или объектом со свойством encoding, задающим кодировку символов для имен файлов. Если для encoding задано значение 'buffer', возвращаемые имена файлов будут представлены объектами Buffer.
Если для options.withFileTypes задано значение true, возвращаемый массив будет содержать объекты fs.Dirent.
import { readdir } from 'node:fs/promises';
try {
const files = await readdir(path);
for (const file of files)
console.log(file);
} catch (err) {
console.error(err);
}
Параметры
path: PathLike options:
(ObjectEncodingOptions & { withFileTypes?: false | undefined; recursive?: boolean | undefined; })
| BufferEncoding
| null
Тип возвращаемого значения
Promise<string[]> Возвращает массив имен файлов в каталоге, за исключением '.' и '..'.
Перегрузка 2
readdir(
path: PathLike,
options: { encoding: "buffer"; withFileTypes?: false | undefined; recursive?: boolean | undefined; } | "buffer",
): Promise<Buffer[]>Асинхронный readdir(3) — чтение каталога.
Параметры
path: PathLike Путь к файлу. Если указан URL, он должен использовать протокол file:.
options: { encoding: "buffer"; withFileTypes?: false | undefined; recursive?: boolean | undefined; } | "buffer" Кодировка (или объект, задающий кодировку), используемая для кодирования результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<Buffer[]> Перегрузка 3
readdir(
path: PathLike,
options?:
(ObjectEncodingOptions & { withFileTypes?: false | undefined; recursive?: boolean | undefined; })
| BufferEncoding
| null
,
): Promise<string[] | Buffer[]>Асинхронный readdir(3) — чтение каталога.
Параметры
path: PathLike Путь к файлу. Если указан URL, он должен использовать протокол file:.
options:
(ObjectEncodingOptions & { withFileTypes?: false | undefined; recursive?: boolean | undefined; })
| BufferEncoding
| null
Кодировка (или объект, задающий кодировку), используемая для кодирования результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<string[] | Buffer[]> Перегрузка 4
readdir(
path: PathLike,
options: ObjectEncodingOptions & { withFileTypes: true; recursive?: boolean | undefined; },
): Promise<Dirent[]>Асинхронный readdir(3) — чтение каталога.
Параметры
path: PathLike Путь к файлу. Если указан URL, он должен использовать протокол file:.
options: ObjectEncodingOptions & { withFileTypes: true; recursive?: boolean | undefined; } При вызове с withFileTypes: true результатом будет массив объектов Dirent.
Тип возвращаемого значения
Promise<Dirent[]> функция readFile
Использование в Deno
import { readFile } from "node:fs/promises";
Перегрузка 1
readFile(
path: PathLike | FileHandle,
): Promise<Buffer>Асинхронно читает всё содержимое файла.
Если кодировка не указана (с помощью options.encoding), данные возвращаются в виде объекта Buffer. В противном случае данные будут представлены строкой.
Если options — строка, она задаёт кодировку.
Если path является каталогом, поведение fsPromises.readFile() зависит от платформы. В macOS, Linux и Windows промис будет отклонён с ошибкой. Во FreeBSD будет возвращено представление содержимого каталога.
Пример чтения файла package.json, расположенного в том же каталоге, что и выполняемый код:
import { readFile } from 'node:fs/promises';
try {
const filePath = new URL('./package.json', import.meta.url);
const contents = await readFile(filePath, { encoding: 'utf8' });
console.log(contents);
} catch (err) {
console.error(err.message);
}
Текущий запрос readFile можно прервать с помощью AbortSignal. Если запрос прерван, возвращённый промис отклоняется с ошибкой AbortError:
import { readFile } from 'node:fs/promises';
try {
const controller = new AbortController();
const { signal } = controller;
const promise = readFile(fileName, { signal });
// Abort the request before the promise settles.
controller.abort();
await promise;
} catch (err) {
// When a request is aborted - err is an AbortError
console.error(err);
}
Прерывание текущего запроса не прерывает отдельные запросы операционной системы, а прекращает внутреннюю буферизацию, выполняемую fs.readFile.
Указанный FileHandle должен поддерживать чтение.
Параметры
path: PathLike | FileHandle имя файла или FileHandle
Тип возвращаемого значения
Promise<Buffer> При успешном выполнении возвращает содержимое файла.
Перегрузка 2
readFile(
path: PathLike | FileHandle,
): Promise<string>Асинхронно читает всё содержимое файла.
Параметры
path: PathLike | FileHandle Путь к файлу. Если указана URL-адрес, он должен использовать протокол file:. Если указан FileHandle, соответствующий файл не будет закрыт автоматически.
Тип возвращаемого значения
Promise<string> Перегрузка 3
readFile(
path: PathLike | FileHandle,
options?: ,
): Promise<string | Buffer>Асинхронно читает всё содержимое файла.
Параметры
path: PathLike | FileHandle Путь к файлу. Если указана URL-адрес, он должен использовать протокол file:. Если указан FileHandle, соответствующий файл не будет закрыт автоматически.
options: Объект, который может содержать необязательный флаг. Если флаг не указан, по умолчанию используется 'r'.
Тип возвращаемого значения
Promise<string | Buffer> функция readlink
Использование в Deno
import { readlink } from "node:fs/promises";
Перегрузка 1
readlink(
path: PathLike,
options?: ,
): Promise<string>Читает содержимое символической ссылки, на которую указывает path. Подробнее см. в документации POSIX по readlink(2). При успешном выполнении промис возвращает linkString.
Необязательный аргумент options может быть строкой, задающей кодировку, или объектом со свойством encoding, задающим кодировку символов для возвращаемого пути ссылки. Если для encoding задано значение 'buffer', возвращаемый путь ссылки будет представлен объектом Buffer.
Параметры
path: PathLike options: Тип возвращаемого значения
Promise<string> При успешном выполнении возвращает linkString.
Перегрузка 2
readlink(
path: PathLike,
options: BufferEncodingOption,
): Promise<Buffer>Асинхронный readlink(2) — чтение значения символической ссылки.
Параметры
path: PathLike Путь к файлу. Если указана URL-адрес, он должен использовать протокол file:.
options: BufferEncodingOption Кодировка (или объект с указанием кодировки), используемая для результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<Buffer> Перегрузка 3
readlink(
path: PathLike,
options?: ,
): Promise<string | Buffer>Асинхронный readlink(2) — чтение значения символической ссылки.
Параметры
path: PathLike Путь к файлу. Если указана URL-адрес, он должен использовать протокол file:.
options: Кодировка (или объект с указанием кодировки), используемая для результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<string | Buffer> функция realpath
Использование в Deno
import { realpath } from "node:fs/promises";
Перегрузка 1
realpath(
path: PathLike,
options?: ,
): Promise<string>Определяет фактическое расположение path, используя ту же семантику, что и функция fs.realpath.native().
Поддерживаются только пути, которые можно преобразовать в строки UTF-8.
Необязательный аргумент options может быть строкой, задающей кодировку, или объектом со свойством encoding, задающим кодировку символов для пути. Если для encoding задано значение 'buffer', возвращаемый путь будет представлен объектом Buffer.
В Linux, если Node.js скомпонован с musl libc, для работы этой функции файловая система procfs должна быть смонтирована в /proc. Для Glibc это ограничение не действует.
Параметры
path: PathLike options: Тип возвращаемого значения
Promise<string> При успешном выполнении возвращает разрешённый путь.
Перегрузка 2
realpath(
path: PathLike,
options: BufferEncodingOption,
): Promise<Buffer>Асинхронный realpath(3) — возврат канонического абсолютного пути.
Параметры
path: PathLike Путь к файлу. Если указана URL-адрес, он должен использовать протокол file:.
options: BufferEncodingOption Кодировка (или объект с указанием кодировки), используемая для результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<Buffer> Перегрузка 3
realpath(
path: PathLike,
options?: ,
): Promise<string | Buffer>Асинхронный realpath(3) — возврат канонического абсолютного пути.
Параметры
path: PathLike Путь к файлу. Если указана URL-адрес, он должен использовать протокол file:.
options: Кодировка (или объект с указанием кодировки), используемая для результата. Если не указана, используется 'utf8'.
Тип возвращаемого значения
Promise<string | Buffer> функция rename
Использование в Deno
import { rename } from "node:fs/promises";
функция rm
Использование в Deno
import { rm } from "node:fs/promises";
функция rmdir
Использование в Deno
import { rmdir } from "node:fs/promises";
rmdir(
path: PathLike,
options?: RmDirOptions,
): Promise<void>Удаляет каталог, указанный в path.
При использовании fsPromises.rmdir() для файла (не каталога) промис отклоняется с ошибкой ENOENT в Windows и ошибкой ENOTDIR в POSIX.
Чтобы получить поведение, аналогичное команде Unix rm -rf, используйте fsPromises.rm() с параметрами { recursive: true, force: true }.
Параметры
path: PathLike options: RmDirOptions Тип возвращаемого значения
Promise<void> При успешном выполнении возвращает undefined.
функция stat
Использование в Deno
import { stat } from "node:fs/promises";
Перегрузка 1
stat(
path: PathLike,
opts?: StatOptions & { bigint?: false | undefined; },
): Promise<Stats>Параметры
path: PathLike opts: StatOptions & { bigint?: false | undefined; } Тип возвращаемого значения
Promise<Stats> При успешном выполнении возвращает объект {fs.Stats} для указанного path.
Перегрузка 2
stat(
path: PathLike,
opts: StatOptions & { bigint: true; },
): Promise<BigIntStats>Параметры
path: PathLike opts: StatOptions & { bigint: true; } Тип возвращаемого значения
Promise<BigIntStats> Перегрузка 3
stat(
path: PathLike,
opts?: StatOptions,
): Promise<Stats | BigIntStats>Параметры
path: PathLike opts: StatOptions Тип возвращаемого значения
Promise<Stats | BigIntStats> функция statfs
Использование в Deno
import { statfs } from "node:fs/promises";
Перегрузка 1
statfs(
path: PathLike,
opts?: StatFsOptions & { bigint?: false | undefined; },
): Promise<StatsFs>Параметры
path: PathLike opts: StatFsOptions & { bigint?: false | undefined; } Тип возвращаемого значения
Promise<StatsFs> Возвращает объект {fs.StatFs} для указанного path.
Перегрузка 2
statfs(
path: PathLike,
opts: StatFsOptions & { bigint: true; },
): Promise<BigIntStatsFs>Параметры
path: PathLike opts: StatFsOptions & { bigint: true; } Тип возвращаемого значения
Promise<BigIntStatsFs> Перегрузка 3
statfs(
path: PathLike,
opts?: StatFsOptions,
): Promise<StatsFs | BigIntStatsFs>Параметры
path: PathLike opts: StatFsOptions Тип возвращаемого значения
Promise<StatsFs | BigIntStatsFs> функция symlink
Использование в Deno
import { symlink } from "node:fs/promises";
symlink(): Promise<void>Создаёт символическую ссылку.
Аргумент type используется только на платформах Windows и может принимать значения 'dir', 'file' или 'junction'. Если аргумент type не является строкой, Node.js автоматически определит тип target и использует 'file' или 'dir'. Если target не существует, будет использовано 'file'. Для точек соединения Windows требуется, чтобы путь назначения был абсолютным. При использовании 'junction' аргумент target будет автоматически преобразован в абсолютный путь. Точки соединения на томах NTFS могут указывать только на каталоги.
Параметры
Тип возвращаемого значения
Promise<void> В случае успеха возвращает undefined.
функция truncate
Использование в Deno
import { truncate } from "node:fs/promises";
функция unlink
Использование в Deno
import { unlink } from "node:fs/promises";
unlink(path: PathLike): Promise<void>Если path указывает на символическую ссылку, она удаляется без воздействия на файл или каталог, на который ссылается. Если path указывает на путь к файлу, не являющемуся символической ссылкой, файл удаляется. Подробнее см. в документации POSIX для unlink(2).
Параметры
path: PathLike Тип возвращаемого значения
Promise<void> В случае успеха возвращает undefined.
функция utimes
Использование в Deno
import { utimes } from "node:fs/promises";
utimes(): Promise<void>Изменяет временные метки файловой системы объекта, на который ссылается path.
Для аргументов atime и mtime действуют следующие правила:
- Значения могут быть числами, представляющими время эпохи Unix, значениями
Dateили числовой строкой, например'123456789.0'. - Если значение невозможно преобразовать в число либо оно равно
NaN,Infinityили-Infinity, будет выброшено исключениеError.
Параметры
Тип возвращаемого значения
Promise<void> В случае успеха возвращает undefined.
функция watch
Использование в Deno
import { watch } from "node:fs/promises";
Перегрузка 1
watch(
filename: PathLike,
options: (WatchOptions & { encoding: "buffer"; }) | "buffer",
): AsyncIterable<FileChangeInfo<Buffer>>Возвращает асинхронный итератор, отслеживающий изменения в filename, где filename — файл или каталог.
import { watch } from 'node:fs/promises';
const ac = new AbortController();
const { signal } = ac;
setTimeout(() => ac.abort(), 10000);
(async () => {
try {
const watcher = watch(__filename, { signal });
for await (const event of watcher)
console.log(event);
} catch (err) {
if (err.name === 'AbortError')
return;
throw err;
}
})();
На большинстве платформ 'rename' создаётся при появлении или исчезновении имени файла в каталоге.
Для fsPromises.watch() также применяются все caveats для fs.watch().
Параметры
filename: PathLike options: (WatchOptions & { encoding: "buffer"; }) | "buffer" Тип возвращаемого значения
AsyncIterable<FileChangeInfo<Buffer>> объектов со следующими свойствами:
Перегрузка 2
watch(
filename: PathLike,
options?: WatchOptions | BufferEncoding,
): AsyncIterable<FileChangeInfo<string>>Отслеживает изменения в filename, где filename — файл или каталог, и возвращает FSWatcher.
Параметры
filename: PathLike Путь к файлу или каталогу. Если указан URL, он должен использовать протокол file:.
options: WatchOptions | BufferEncoding Кодировка имени файла, передаваемого обработчику, либо объект с необязательными параметрами encoding, persistent и recursive. Если encoding не задан, используется значение по умолчанию 'utf8'. Если persistent не задан, используется значение по умолчанию true. Если recursive не задан, используется значение по умолчанию false.
Тип возвращаемого значения
AsyncIterable<FileChangeInfo<string>> Перегрузка 3
watch(
filename: PathLike,
options: WatchOptions | string,
): AsyncIterable<FileChangeInfo<string>> | AsyncIterable<FileChangeInfo<Buffer>>Отслеживает изменения в filename, где filename — файл или каталог, и возвращает FSWatcher.
Параметры
filename: PathLike Путь к файлу или каталогу. Если указан URL, он должен использовать протокол file:.
options: WatchOptions | string Кодировка имени файла, передаваемого обработчику, либо объект с необязательными параметрами encoding, persistent и recursive. Если encoding не задан, используется значение по умолчанию 'utf8'. Если persistent не задан, используется значение по умолчанию true. Если recursive не задан, используется значение по умолчанию false.
Тип возвращаемого значения
AsyncIterable<FileChangeInfo<string>> | AsyncIterable<FileChangeInfo<Buffer>> функция writeFile
Использование в Deno
import { writeFile } from "node:fs/promises";
writeFile(
file: PathLike | FileHandle,
data:
string
| ArrayBufferView
| Iterable<string | ArrayBufferView>
| AsyncIterable<string | ArrayBufferView>
| Stream
,
options?:
(
ObjectEncodingOptions
& { mode?: Mode | undefined; flag?: OpenMode | undefined; flush?: boolean | undefined; }
& Abortable
)
| BufferEncoding
| null
,
): Promise<void>Асинхронно записывает данные в файл, заменяя его, если он уже существует. data может быть строкой, буфером, объектом AsyncIterable или объектом Iterable.
Параметр encoding игнорируется, если data является буфером.
Если options — строка, она задаёт кодировку.
Параметр mode влияет только на вновь созданный файл. Подробнее см. fs.open().
Указанный FileHandle должен поддерживать запись.
Небезопасно вызывать fsPromises.writeFile() несколько раз для одного файла, не дождавшись выполнения promise.
Подобно fsPromises.readFile, fsPromises.writeFile — это вспомогательный метод, который для записи переданного ему буфера выполняет несколько вызовов write. В коде, критичном к производительности, рекомендуется использовать fs.createWriteStream() или filehandle.createWriteStream().
Для отмены fsPromises.writeFile() можно использовать AbortSignal. Отмена выполняется «по возможности», поэтому часть данных, скорее всего, всё равно будет записана.
import { writeFile } from 'node:fs/promises';
import { Buffer } from 'node:buffer';
try {
const controller = new AbortController();
const { signal } = controller;
const data = new Uint8Array(Buffer.from('Hello Node.js'));
const promise = writeFile('message.txt', data, { signal });
// Abort the request before the promise settles.
controller.abort();
await promise;
} catch (err) {
// When a request is aborted - err is an AbortError
console.error(err);
}
Прерывание выполняющегося запроса не отменяет отдельные запросы операционной системы, а останавливает внутреннюю буферизацию, выполняемую fs.writeFile.
Параметры
file: PathLike | FileHandle имя файла или FileHandle
data:
string
| ArrayBufferView
| Iterable<string | ArrayBufferView>
| AsyncIterable<string | ArrayBufferView>
| Stream
options:
(
ObjectEncodingOptions
& { mode?: Mode | undefined; flag?: OpenMode | undefined; flush?: boolean | undefined; }
& Abortable
)
| BufferEncoding
| null
Тип возвращаемого значения
Promise<void> В случае успеха возвращает undefined.
функция lchmod
Использование в Deno
import { lchmod } from "node:fs/promises";
lchmod(): Promise<void>интерфейс CreateReadStreamOptions
Использование в Deno
import { type CreateReadStreamOptions } from "node:fs/promises";
интерфейс CreateWriteStreamOptions
Использование в Deno
import { type CreateWriteStreamOptions } from "node:fs/promises";
интерфейс FileChangeInfo
Использование в Deno
import { type FileChangeInfo } from "node:fs/promises";
Параметры типа
T extends string | Buffer Свойства
интерфейс FileHandle
Использование в Deno
import { type FileHandle } from "node:fs/promises";
Свойства
fd: number Числовой дескриптор файла, которым управляет объект {FileHandle}.
Методы
appendFile(
data: string | Uint8Array,
options?: ,
): Promise<void> Псевдоним для filehandle.writeFile().
При работе с дескрипторами файлов режим нельзя изменить по сравнению с тем, который был задан с помощью fsPromises.open(). Поэтому это эквивалентно filehandle.writeFile().
createReadStream(options?: CreateReadStreamOptions): ReadStream В отличие от значения highWaterMark по умолчанию, равного 16 КиБ для stream.Readable, поток, возвращаемый этим методом, имеет значение highWaterMark по умолчанию, равное 64 КиБ.
options может включать значения start и end для чтения диапазона байтов из файла, а не всего файла. И start, и end включаются в диапазон и отсчитываются с 0; допустимые значения находятся в диапазоне [0, Number.MAX_SAFE_INTEGER]. Если start не указано или равно undefined, filehandle.createReadStream() выполняет последовательное чтение с текущей позиции файла. encoding может принимать любое из значений, допустимых для Buffer.
Если FileHandle указывает на символьное устройство, поддерживающее только блокирующее чтение (например, клавиатуру или звуковую карту), операции чтения не завершаются до появления данных. Это может помешать завершению процесса и естественному закрытию потока.
По умолчанию поток выдаёт событие 'close' после уничтожения. Чтобы изменить это поведение, задайте для параметра emitClose значение false.
import { open } from 'node:fs/promises';
const fd = await open('/dev/input/event0');
// Create a stream from some character device.
const stream = fd.createReadStream();
setTimeout(() => {
stream.close(); // This may not close the stream.
// Artificially marking end-of-stream, as if the underlying resource had
// indicated end-of-file by itself, allows the stream to close.
// This does not cancel pending read operations, and if there is such an
// operation, the process may still not be able to exit successfully
// until it finishes.
stream.push(null);
stream.read(0);
}, 100);
Если autoClose имеет значение false, дескриптор файла не будет закрыт, даже если произойдёт ошибка. Приложение должно самостоятельно закрыть его и убедиться, что утечки дескрипторов файлов не происходит. Если для autoClose задано значение true (поведение по умолчанию), дескриптор файла будет закрыт автоматически при 'error' или 'end'.
Пример чтения последних 10 байтов файла длиной 100 байтов:
import { open } from 'node:fs/promises';
const fd = await open('sample.txt');
fd.createReadStream({ start: 90, end: 99 });
createWriteStream(options?: CreateWriteStreamOptions): WriteStream options также может включать параметр start, позволяющий записывать данные в позицию после начала файла; допустимые значения находятся в диапазоне [0, Number.MAX_SAFE_INTEGER]. Для изменения файла вместо его замены может потребоваться задать для параметра flags open значение r+ вместо значения по умолчанию r. encoding может принимать любое из значений, допустимых для Buffer.
Если для autoClose задано значение true (поведение по умолчанию), дескриптор файла будет автоматически закрыт при 'error' или 'finish'. Если autoClose имеет значение false, дескриптор файла не будет закрыт, даже если произойдёт ошибка. Приложение должно самостоятельно закрыть его и убедиться, что утечки дескрипторов файлов не происходит.
По умолчанию поток выдаёт событие 'close' после уничтожения. Чтобы изменить это поведение, задайте для параметра emitClose значение false.
datasync(): Promise<void> Переводит все текущие операции ввода-вывода, поставленные в очередь для файла, в состояние завершения синхронизированного ввода-вывода операционной системы. Подробности см. в документации POSIX для fdatasync(2).
В отличие от filehandle.sync, этот метод не сбрасывает изменённые метаданные.
sync(): Promise<void> Запрашивает сброс всех данных открытого дескриптора файла на устройство хранения. Конкретная реализация зависит от операционной системы и устройства. Подробности см. в документации POSIX для fsync(2).
read<T extends ArrayBufferView>(
buffer: T,
offset?: number | null,
length?: number | null,
position?: number | null,
): Promise<FileReadResult<T>> Читает данные из файла и сохраняет их в заданном буфере.
Если файл не изменяется одновременно, достижение конца файла определяется нулевым количеством прочитанных байтов.
read<T extends ArrayBufferView = Buffer>(
buffer: T,
options?: FileReadOptions<T>,
): Promise<FileReadResult<T>> read<T extends ArrayBufferView = Buffer>(options?: FileReadOptions<T>): Promise<FileReadResult<T>> readableWebStream(options?: ReadableWebStreamOptions): ReadableStream Возвращает ReadableStream, который можно использовать для чтения данных файла.
Если вызвать этот метод более одного раза или после закрытия либо начала закрытия FileHandle, будет выброшена ошибка.
import {
open,
} from 'node:fs/promises';
const file = await open('./some/file/to/read');
for await (const chunk of file.readableWebStream())
console.log(chunk);
await file.close();
Хотя ReadableStream прочитает файл до конца, он не закроет FileHandle автоматически. Пользовательский код должен по-прежнему вызывать метод fileHandle.close().
readFile(options?: { encoding?: null | undefined; flag?: OpenMode | undefined; } | null): Promise<Buffer> Асинхронно читает всё содержимое файла.
Если options является строкой, она задаёт encoding.
FileHandle должен поддерживать чтение.
Если для дескриптора файла был выполнен один или несколько вызовов filehandle.read(), а затем вызов filehandle.readFile(), данные будут прочитаны с текущей позиции до конца файла. Чтение не всегда начинается с начала файла.
readFile(options: { encoding: BufferEncoding; flag?: OpenMode | undefined; } | BufferEncoding): Promise<string> Асинхронно читает всё содержимое файла. Базовый файл не будет закрыт автоматически. FileHandle должен быть открыт для чтения.
readFile(options?: ): Promise<string | Buffer> Асинхронно читает всё содержимое файла. Базовый файл не будет закрыт автоматически. FileHandle должен быть открыт для чтения.
readLines(options?: CreateReadStreamOptions): ReadlineInterface Вспомогательный метод для создания интерфейса readline и чтения файла в виде потока. Параметры см. в filehandle.createReadStream().
import { open } from 'node:fs/promises';
const file = await open('./some/file/to/read');
for await (const line of file.readLines()) {
console.log(line);
}
stat(opts?: StatOptions & { bigint?: false | undefined; }): Promise<Stats> stat(opts: StatOptions & { bigint: true; }): Promise<BigIntStats> stat(opts?: StatOptions): Promise<Stats | BigIntStats> truncate(len?: number): Promise<void> Обрезает файл.
Если размер файла превышает len байт, в файле останутся только первые len байт.
В следующем примере в файле остаются только первые четыре байта:
import { open } from 'node:fs/promises';
let filehandle = null;
try {
filehandle = await open('temp.txt', 'r+');
await filehandle.truncate(4);
} finally {
await filehandle?.close();
}
Если ранее размер файла был меньше len байт, он увеличивается, а добавленная часть заполняется нулевыми байтами ('\0'):
Если len отрицательно, будет использовано 0.
Изменяет временные метки файловой системы объекта, на который ссылается FileHandle, а в случае успеха выполняет промис без аргументов.
writeFile(
data: string | Uint8Array,
options?: ,
): Promise<void> Асинхронно записывает данные в файл, заменяя файл, если он уже существует. data может быть строкой, буфером, объектом AsyncIterable или объектом Iterable. В случае успеха промис выполняется без аргументов.
Если options является строкой, она задаёт encoding.
FileHandle должен поддерживать запись.
Небезопасно вызывать filehandle.writeFile() несколько раз для одного файла, не дождавшись выполнения (или отклонения) промиса.
Если для дескриптора файла был выполнен один или несколько вызовов filehandle.write(), а затем вызов filehandle.writeFile(), данные будут записаны с текущей позиции до конца файла. Запись не всегда начинается с начала файла.
write<TBuffer extends Uint8Array>(
buffer: TBuffer,
offset?: number | null,
length?: number | null,
position?: number | null,
): Promise<{ bytesWritten: number; buffer: TBuffer; }> Записывает buffer в файл.
Промис выполняется с объектом, содержащим два свойства:
Небезопасно вызывать filehandle.write() несколько раз для одного файла, не дождавшись выполнения (или отклонения) промиса. В этом случае используйте filehandle.createWriteStream().
В Linux позиционная запись не работает, если файл открыт в режиме добавления. Ядро игнорирует аргумент позиции и всегда добавляет данные в конец файла.
write<TBuffer extends Uint8Array>(
buffer: TBuffer,
options?: { offset?: number; length?: number; position?: number; },
): Promise<{ bytesWritten: number; buffer: TBuffer; }> write(
data: string,
position?: number | null,
encoding?: BufferEncoding | null,
): Promise<{ bytesWritten: number; buffer: string; }> writev(
buffers: readonly ArrayBufferView[],
position?: number,
): Promise<WriteVResult> Записывает в файл массив объектов ArrayBufferView.
Промис выполняется с объектом, содержащим два свойства:
Небезопасно вызывать writev() несколько раз для одного файла, не дождавшись выполнения (или отклонения) промиса.
В Linux позиционная запись не работает, если файл открыт в режиме добавления. Ядро игнорирует аргумент позиции и всегда добавляет данные в конец файла.
readv(
buffers: readonly ArrayBufferView[],
position?: number,
): Promise<ReadVResult> Читает данные из файла и записывает их в массив объектов ArrayBufferView
close(): Promise<void> Закрывает дескриптор файла после завершения всех ожидающих операций с ним.
import { open } from 'node:fs/promises';
let filehandle;
try {
filehandle = await open('thefile.txt', 'r');
} finally {
await filehandle?.close();
}
[[Symbol.asyncDispose]](): Promise<void> Псевдоним для FileHandle.close().
интерфейс FileReadOptions
Использование в Deno
import { type FileReadOptions } from "node:fs/promises";
интерфейс FileReadResult
Использование в Deno
import { type FileReadResult } from "node:fs/promises";
интерфейс FlagAndOpenMode
Использование в Deno
import { type FlagAndOpenMode } from "node:fs/promises";
интерфейс ReadableWebStreamOptions
Использование в Deno
import { type ReadableWebStreamOptions } from "node:fs/promises";
Свойства
type: "bytes" | undefined Какой поток открыть: обычный или 'bytes'.
переменная constants
Использование в Deno
import { constants } from "node:fs/promises";
Тип
fsConstants
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/fs/promises