Базовый модуль модуля

модуль фс

Модуль fs — это модуль работы файловой системы. Он обеспечивает операции дискового ввода-вывода, такие как чтение файлов, запись файлов, открытие файлов, закрытие файлов, изменение прав доступа к файлам и т. д., а также поддерживает как синхронное, так и асинхронное использование. Модуль fs также предоставляет функцию файлового монитора, которая может отслеживать изменения в файлах и каталогах файловой системы и вызывать указанную функцию.

Например, чтобы прочитать файл в fibjs, вы можете использовать метод readFile модуля fs:

1 2
var fs = require('fs'); var content = fs.readFile('/path/to/file');

Если вы хотите прочитать файл асинхронно, вы можете сделать это через обратный вызов:

1 2 3 4 5
var fs = require('fs'); fs.readFile('/path/to/file', function(err, data) { if (err) throw err; console.log(data); });

Аналогично, если вы хотите выполнить запись в файл, вы можете использовать метод writeFile модуля fs:

1 2 3
var fs = require('fs'); var content = 'hello, world!'; fs.writeFile('/path/to/file', content);

Если вы хотите записать файл асинхронно, вы можете сделать это через обратный вызов:

1 2 3 4 5 6
var fs = require('fs'); var content = 'hello, world!'; fs.writeFile('/path/to/file', content, function(err) { if (err) throw err; console.log('File saved.'); });

Помимо чтения и записи файлов, модуль fs также обеспечивает ряд других операций с файловой системой, таких как создание каталогов, изменение прав доступа к файлам, запрос состояния файлов и т. д.

Некоторые моменты, на которые следует обратить внимание:

  • Запуск fs.watch(filename)вернет значение, унаследованное отEventEmitterнаблюдатель, который поддерживает три события: «изменение», «только изменение», «только переименование».
  • fs.watchFile(target)и fs.unwatchFile(target)все еще можно использовать в парах
  • fs.watchFile(target)вернет значение, унаследованное отEventEmitterизStatsWatcherObject, call fs.unwatchFile(target)эквивалентен call StatsWatcher.close().
  • Поскольку uv реализован в Linux, fs.watchэта recursiveопция стабильно поддерживается только в win32/darwin. Вы все равно можете попробовать использовать ее в Linux fs.watch('/[path](path.md)/to', { recursive: true }, handler), но можете обнаружить, что handlerвремя обратного вызова отличается от ожидаемого.

объект

constants

Постоянные объекты модуля fs

1
fs_constants fs.constants;

статическая функция

exists

Запросить, существует ли указанный файл или каталог

1
static Boolean fs.exists(String path) async;

Параметры звонка:

  • path: строка, укажите путь для запроса

Результаты возврата:

  • Boolean, возвращает True, чтобы указать, что файл или каталог существует.

access

Запросить права пользователя на указанный файл

1 2
static fs.access(String path, Integer mode = 0) async;

Параметры звонка:

  • path: строка, укажите путь для запроса
  • mode: целое число, указывает разрешение запроса, по умолчанию указывается, существует ли файл.

Создайте файл жесткой ссылки. Этот метод не поддерживается в Windows.

1 2
static fs.link(String oldPath, String newPath) async;

Параметры звонка:

  • oldPath: строка, исходный файл
  • newPath: строка, файл, который будет создан.

Удалить указанный файл

1
static fs.unlink(String path) async;

Параметры звонка:

  • path: строка, указывает путь для удаления.

mkdir

Создать каталог

1 2
static fs.mkdir(String path, Integer mode = 0777) async;

Параметры звонка:

  • path: строка, укажите имя создаваемого каталога.
  • mode: целое число, определяет права доступа к файлу, Windows игнорирует этот параметр, значение по умолчанию: 0777.

Создать каталог

1 2
static fs.mkdir(String path, Object opt) async;

Параметры звонка:

  • path: строка, укажите имя создаваемого каталога.
  • opt: Объект, укажите параметры создания

Параметры создания могут содержать следующие значения:

1 2 3 4
{ recursive: false, // specify whether parent directories should be created. Default: false mode: 0777 // specify the file mode. Default: 0777 }

rmdir

Удалить каталог

1
static fs.rmdir(String path) async;

Параметры звонка:

  • path: строка, указывает имя каталога, который необходимо удалить.

rename

Переименовать файл

1 2
static fs.rename(String from, String to) async;

Параметры звонка:

  • from: строка, указывает файл, который нужно переименовать.
  • to: строка, указывает новое имя файла, который нужно изменить.

copyFile

Скопируйте src в dest. По умолчанию, если dest уже существует, он перезаписывается.

1 2 3
static fs.copyFile(String from, String to, Integer mode = 0) async;

Параметры звонка:

  • from: строка, указывает имя исходного файла, который нужно скопировать.
  • to: строка, указывает имя целевого файла, который необходимо скопировать.
  • mode: целое число, указывает модификатор операции копирования, значение по умолчанию — 0.

mode — необязательное целое число, определяющее поведение операции копирования. Вы можете создать маску, состоящую из побитового ИЛИ двух или более значений (например.fs.constants.COPYFILE_EXCL |fs.constants.COPYFILE_FICLONE).

  • fs.constants.COPYFILE_EXCL — если dest уже существует, операция копирования завершится неудачей.
  • fs.constants.COPYFILE_FICLONE — операция копирования попытается создать ссылку для копирования при записи. Если платформа не поддерживает копирование при записи, используется механизм резервного копирования.
  • fs.constants.COPYFILE_FICLONE_FORCE — операция копирования попытается создать ссылку для копирования при записи. Если платформа не поддерживает копирование при записи, операция копирования завершится неудачей.

chmod

Установите права доступа для указанного файла. Windows не поддерживает этот метод.

1 2
static fs.chmod(String path, Integer mode) async;

Параметры звонка:

  • path: строка, файл, определяющий операцию.
  • mode: целое число, указывает установленные права доступа.

lchmod

Установите права доступа к указанному файлу. Если файл представляет собой программную ссылку, разрешения, указывающие на файл, не будут изменены. Он доступен только на платформах серий macOS и BSD.

1 2
static fs.lchmod(String path, Integer mode) async;

Параметры звонка:

  • path: строка, файл, определяющий операцию.
  • mode: целое число, указывает установленные права доступа.

chown

Установите владельца указанного файла. Windows не поддерживает этот метод.

1 2 3
static fs.chown(String path, Integer uid, Integer gid) async;

Параметры звонка:

  • path: Строка, настройки файла.
  • uid: целое число, идентификатор пользователя владельца файла.
  • gid: целое число, идентификатор группы владельцев файлов.

lchown

Установите владельца указанного файла. Если указанный файл является программной ссылкой, владелец файла, на который он указывает, не будет изменен. Windows не поддерживает этот метод.

1 2 3
static fs.lchown(String path, Integer uid, Integer gid) async;

Параметры звонка:

  • path: Строка, настройки файла.
  • uid: целое число, идентификатор пользователя владельца файла.
  • gid: целое число, идентификатор группы владельцев файлов.

stat

Запросить основную информацию указанного файла

1
static Stat fs.stat(String path) async;

Параметры звонка:

  • path: строка, указывает файл, который будет запрошен.

Результаты возврата:

  • Stat, возвращает основную информацию о файле

lstat

Запросить основную информацию указанного файла. В отличие от stat, когдаpathЕсли это программная ссылка, возвращаемая информация будет информацией этой программной ссылки, а не информацией указанного файла.

1
static Stat fs.lstat(String path) async;

Параметры звонка:

  • path: строка, указывает файл, который будет запрошен.

Результаты возврата:

  • Stat, возвращает основную информацию о файле

fstat

Запросить основную информацию указанного файла

1
static Stat fs.fstat(FileHandle fd) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла

Результаты возврата:

  • Stat, возвращает основную информацию о файле

Прочтите указанный файл программной ссылки. Этот метод не поддерживается в Windows.

1
static String fs.readlink(String path) async;

Параметры звонка:

  • path: строка, указывает файл мягкой ссылки для чтения.

Результаты возврата:

  • String, возвращает имя файла, на которое указывает программная ссылка

realpath

Возвращает абсолютный путь указанного пути. Если указанный путь содержит относительный путь, он также будет расширен.

1
static String fs.realpath(String path) async;

Параметры звонка:

  • path: строка, указывает путь для чтения

Результаты возврата:

  • String, возвращает обработанный абсолютный путь

Создать файл мягкой ссылки

1 2 3
static fs.symlink(String target, String linkpath, String type = "file") async;

Параметры звонка:

  • target: строка, целевой файл, который может быть файлом, каталогом или несуществующим путем.
  • linkpath: строка, файл мягкой ссылки, который будет создан.
  • type: строка, тип создаваемого мягкого соединения, необязательные типы: «файл», «каталог», «соединение», по умолчанию — «файл», этот параметр действителен только в Windows, если это «соединение», цель будет создан Путь linkpath должен быть абсолютным путем, и целевой путь будет автоматически преобразован в абсолютный путь.

truncate

Измените размер файла. Если указанная длина превышает размер исходного файла, он будет заполнен «\0», в противном случае лишнее содержимое файла будет потеряно.

1 2
static fs.truncate(String path, Integer len) async;

Параметры звонка:

  • path: строка, указывает путь к измененному файлу.
  • len: целое число, указывает размер измененного файла.

read

Прочитайте содержимое файла в соответствии с дескриптором файла.

1 2 3 4 5
static Integer fs.read(FileHandle fd, Buffer buffer, Integer offset = 0, Integer length = 0, Integer position = -1) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла
  • buffer:Buffer, результат чтения записывается вBufferобъект
  • offset: Целое число,BufferСмещение записи, по умолчанию 0.
  • length: целое число, количество байтов, прочитанных из файла, по умолчанию — 0.
  • position: целое число, позиция чтения файла, по умолчанию — текущая позиция файла.

Результаты возврата:

  • Integer, фактическое количество прочитанных байт

fchmod

Измените режим файла на основе дескриптора файла. Действительно только в системах POSIX.

1 2
static fs.fchmod(FileHandle fd, Integer mode) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла
  • mode: целое число, режим файла

fchown

В зависимости от дескриптора файла измените владельца. Действительно только в системах POSIX.

1 2 3
static fs.fchown(FileHandle fd, Integer uid, Integer gid) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла
  • uid: целое число, идентификатор пользователя
  • gid: целое число, идентификатор группы

fdatasync

Синхронизировать данные на диск на основе файлового дескриптора

1
static fs.fdatasync(FileHandle fd) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла

fsync

Синхронизировать данные на диск на основе файлового дескриптора

1
static fs.fsync(FileHandle fd) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла

readdir

Чтение информации о файле из указанного каталога

1
static NArray fs.readdir(String path) async;

Параметры звонка:

  • path: строка, указывает каталог для запроса.

Результаты возврата:

  • NArray, возвращает массив информации о файле каталога

Чтение информации о файле из указанного каталога

1 2
static NArray fs.readdir(String path, Object opts = {}) async;

Параметры звонка:

  • path: строка, указывает каталог для запроса.
  • opts: Объект, укажите параметры

Результаты возврата:

  • NArray, возвращает массив информации о файле каталога

Опции, поддерживаемые параметром opts, следующие:

1 2 3
{ "recursive": false // specify whether all subdirectories should be watched or only the current directory }

openFile

Откройте файл для чтения, записи или того и другого.

1 2
static SeekableStream fs.openFile(String fname, String flags = "r") async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • flags: строка, указывает метод открытия файла, по умолчанию — «r», режим только для чтения.

Результаты возврата:

  • SeekableStream, возвращает объект открытого файла

Поддерживаются следующие методы флагов параметров:

  • 'r' Режим только для чтения, выдает ошибку, если файл не существует.
  • Режим чтения и записи 'r+', выдает ошибку, если файл не существует.
  • "w" — режим только для записи. Если файл не существует, он будет создан автоматически. Если он существует, он будет очищен.
  • В режиме чтения и записи 'w+' файл будет создан автоматически, если он не существует.
  • 'a' записывает только метод добавления, и файл будет автоматически создан, если он не существует.
  • В режиме добавления чтения и записи «a+» файл будет создан автоматически, если он не существует.

open

открыть файловый дескриптор

1 2 3
static FileHandle fs.open(String fname, String flags = "r", Integer mode = 0666) async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • flags: строка, указывает метод открытия файла, по умолчанию — «r», режим только для чтения.
  • mode: Целое число, при создании файла укажите режим файла, по умолчанию 0666

Результаты возврата:

  • FileHandle, возвращает дескриптор открытого файла

Поддерживаются следующие методы флагов параметров:

  • 'r' Режим только для чтения, выдает ошибку, если файл не существует.
  • Режим чтения и записи 'r+', выдает ошибку, если файл не существует.
  • "w" — режим только для записи. Если файл не существует, он будет создан автоматически. Если он существует, он будет очищен.
  • В режиме чтения и записи 'w+' файл будет создан автоматически, если он не существует.
  • 'a' записывает только метод добавления, и файл будет автоматически создан, если он не существует.
  • В режиме добавления чтения и записи «a+» файл будет создан автоматически, если он не существует.

close

закрыть дескриптор файла

1
static fs.close(FileHandle fd) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла

openTextStream

Откройте текстовый файл для чтения, записи или того и другого.

1 2
static BufferedStream fs.openTextStream(String fname, String flags = "r") async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • flags: строка, указывает метод открытия файла, по умолчанию — «r», режим только для чтения.

Результаты возврата:

  • BufferedStream, возвращает объект открытого файла

Поддерживаются следующие методы флагов параметров:

  • 'r' Режим только для чтения, выдает ошибку, если файл не существует.
  • Режим чтения и записи 'r+', выдает ошибку, если файл не существует.
  • "w" — режим только для записи. Если файл не существует, он будет создан автоматически. Если он существует, он будет очищен.
  • В режиме чтения и записи 'w+' файл будет создан автоматически, если он не существует.
  • 'a' записывает только метод добавления, и файл будет автоматически создан, если он не существует.
  • В режиме добавления чтения и записи «a+» файл будет создан автоматически, если он не существует.

readTextFile

Откройте текстовый файл и прочитайте его содержимое

1
static String fs.readTextFile(String fname) async;

Параметры звонка:

  • fname: Строка, укажите имя файла

Результаты возврата:

  • String, возвращает текстовое содержимое файла

readFile

Откройте файл и прочитайте содержимое

1 2
static Variant fs.readFile(String fname, String encoding = "") async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • encoding: строка, указывает метод декодирования, по умолчанию декодирование не выполняется.

Результаты возврата:

  • Variant, возвращает текстовое содержимое файла

Откройте файл и прочитайте содержимое

1 2
static Variant fs.readFile(String fname, Object options) async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • options: Объект, определяет параметры чтения

Результаты возврата:

  • Variant, возвращает текстовое содержимое файла

Опции, поддерживаемые опциями, следующие:

1 2 3
{ "encoding": "utf8" // specify the encoding, default is utf8. }

readLines

Откройте файл и прочитайте набор текстовых строк в режиме массива. Идентификатор конца строки основан на настройке атрибута EOL. По умолчанию posix: "\n"; windows: "\r\n"

1 2
static Array fs.readLines(String fname, Integer maxlines = -1);

Параметры звонка:

  • fname: Строка, укажите имя файла
  • maxlines: целое число, указывает максимальное количество строк, которые будут прочитаны в этот раз.По умолчанию считываются все текстовые строки.

Результаты возврата:

  • Array, возвращает массив прочитанных текстовых строк. Если нет данных для чтения или соединение прервано, массив будет пустым.

write

Записать содержимое в файл в соответствии с файловым дескриптором

1 2 3 4 5
static Integer fs.write(FileHandle fd, Buffer buffer, Integer offset = 0, Integer length = -1, Integer position = -1) async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла
  • buffer:Buffer, быть написаннымBufferобъект
  • offset: Целое число,BufferСмещение чтения данных, по умолчанию 0.
  • length: целое число, количество байт, записанных в файл, по умолчанию - -1.
  • position: целое число, местоположение записи файла, по умолчанию — текущее местоположение файла.

Результаты возврата:

  • Integer, фактическое количество записанных байт

Записать содержимое в файл в соответствии с файловым дескриптором

1 2 3 4
static Integer fs.write(FileHandle fd, String string, Integer position = -1, String encoding = "utf8") async;

Параметры звонка:

  • fd:FileHandle, объект дескриптора файла
  • string: Строка, строка, которую нужно записать.
  • position: целое число, местоположение записи файла, по умолчанию — текущее местоположение файла.
  • encoding: строка, указывает метод декодирования, декодирование по умолчанию — utf8.

Результаты возврата:

  • Integer, фактическое количество записанных байт

writeTextFile

Создайте текстовый файл и напишите содержимое

1 2
static fs.writeTextFile(String fname, String txt) async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • txt: Строка, указывает строку, которую нужно записать.

writeFile

Создать двоичный файл и записать содержимое

1 2 3
static fs.writeFile(String fname, Buffer data, String opt = "binary") async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • data:Buffer, указывает двоичные данные для записи
  • opt: строка, указывает параметры записи, будет игнорироваться.

Создать двоичный файл и записать содержимое

1 2 3
static fs.writeFile(String fname, Buffer data, Object options) async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • data:Buffer, указывает двоичные данные для записи
  • options: Объект, определяющий параметры записи, будет игнорироваться.

Создайте файл и напишите контент

1 2 3
static fs.writeFile(String fname, String data, String opt = "utf8") async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • data: строка, указывает данные для записи.
  • opt: Строка, укажите параметры записи

Создайте файл и напишите контент

1 2 3
static fs.writeFile(String fname, String data, Object options) async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • data: строка, указывает данные для записи.
  • options: Объект, укажите параметры записи

Опции, поддерживаемые опциями, следующие:

1 2 3
{ "encoding": "utf8" // specify the encoding, default is utf8. }

appendFile

Создать двоичный файл и записать содержимое

1 2
static fs.appendFile(String fname, Buffer data) async;

Параметры звонка:

  • fname: Строка, укажите имя файла
  • data:Buffer, указывает двоичные данные для записи

setZipFS

настраиватьzipвиртуальное сопоставление файлов

1 2
static fs.setZipFS(String fname, Buffer data);

Параметры звонка:

  • fname: строка, указывает путь сопоставления
  • data:Buffer, задает отображениеzipданные файла

clearZipFS

Прозрачныйzipвиртуальное сопоставление файлов

1
static fs.clearZipFS(String fname = "");

Параметры звонка:

  • fname: строка, указывает путь сопоставления, по умолчанию очищает все кеши.

watch

Просмотрите файл и верните соответствующий объект-наблюдатель.

1
static FSWatcher fs.watch(String fname);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.

Результаты возврата:


Просмотрите файл и верните соответствующий объект-наблюдатель.

1 2
static FSWatcher fs.watch(String fname, Function callback);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.
  • callback: Функция, (evtType: 'change' | 'rename', filename: string) => anyобратный вызов обработки при изменении файлового объекта.

Результаты возврата:


Просмотрите файл и верните соответствующий объект-наблюдатель.

1 2
static FSWatcher fs.watch(String fname, Object options);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.
  • options: Объект, параметры наблюдения

Результаты возврата:

Опции, поддерживаемые опциями, следующие:

1 2 3 4 5
{ "persistent": true, // specify whether the process should continue to run as long as files are being watched "recursive": false, // specify whether all subdirectories should be watched or only the current directory "encoding": "utf8", // specify the encoding, default is utf8. }

Просмотрите файл и верните соответствующий объект-наблюдатель.

1 2 3
static FSWatcher fs.watch(String fname, Object options, Function callback);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.
  • options: Объект, параметры наблюдения
  • callback: Функция, (evtType: 'change' | 'rename', filename: string) => anyобратный вызов обработки при изменении файлового объекта.

Результаты возврата:

Опции, поддерживаемые опциями, следующие:

1 2 3 4 5
{ "persistent": true, // specify whether the process should continue to run as long as files are being watched "recursive": false, // specify whether all subdirectories should be watched or only the current directory "encoding": "utf8", // specify the encoding, default is utf8. }

watchFile

Просмотрите файл и верните соответствующийStatsWatcherобъект

1 2
static StatsWatcher fs.watchFile(String fname, Function callback);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.
  • callback: Функция, (curStats: Stats, prevStats: Stats) => anyобратный вызов обработки при изменении статистики файлового объекта.

Результаты возврата:


Просмотрите файл и верните соответствующийStatsWatcherобъект

1 2 3
static StatsWatcher fs.watchFile(String fname, Object options, Function callback);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.
  • options: Объект, параметры наблюдения
  • callback: Функция, (curStats: Stats, prevStats: Stats) => anyобратный вызов обработки при изменении статистики файлового объекта.

Результаты возврата:

Опции, поддерживаемые опциями, следующие:

1 2 3 4 5
{ "persistent": true, // specify whether the process should continue to run as long as files are being watched "recursive": false, // specify whether all subdirectories should be watched or only the current directory "encoding": "utf8", // specify the encoding, default is utf8. }

unwatchFile

От наблюдения за fnameStatsWatcherУдалить все обратные вызовы событий наблюдения из

1
static fs.unwatchFile(String fname);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.

Результаты возврата:


От наблюдения за fnameStatsWatchercallbackУдалите обратный вызов из обратного вызова события наблюдения.

1 2
static fs.unwatchFile(String fname, Function callback);

Параметры звонка:

  • fname: строка, указывает файловый объект, который необходимо наблюдать.
  • callback: Функция, обратный вызов, который нужно удалить

Результаты возврата:

Даже если обратного вызова больше нетStatsWatcherПри обратном вызове события наблюдения не будет сообщено об ошибках.

постоянный

SEEK_SET

искать константу метода, переходить в абсолютную позицию

1
const fs.SEEK_SET = 0;

SEEK_CUR

метод поиска константы, переход к относительному положению текущей позиции

1
const fs.SEEK_CUR = 1;

SEEK_END

константа режима поиска, переход к относительной позиции конца файла

1
const fs.SEEK_END = 2;