модуль фс
Модуль fs — это модуль работы файловой системы. Он обеспечивает операции дискового ввода-вывода, такие как чтение файлов, запись файлов, открытие файлов, закрытие файлов, изменение прав доступа к файлам и т. д., а также поддерживает как синхронное, так и асинхронное использование. Модуль fs также предоставляет функцию файлового монитора, которая может отслеживать изменения в файлах и каталогах файловой системы и вызывать указанную функцию.
Например, чтобы прочитать файл в fibjs, вы можете использовать метод readFile модуля fs:
1
2var fs = require('fs');
var content = fs.readFile('/path/to/file');
Если вы хотите прочитать файл асинхронно, вы можете сделать это через обратный вызов:
1
2
3
4
5var fs = require('fs');
fs.readFile('/path/to/file', function(err, data) {
if (err) throw err;
console.log(data);
});
Аналогично, если вы хотите выполнить запись в файл, вы можете использовать метод writeFile модуля fs:
1
2
3var fs = require('fs');
var content = 'hello, world!';
fs.writeFile('/path/to/file', content);
Если вы хотите записать файл асинхронно, вы можете сделать это через обратный вызов:
1
2
3
4
5
6var 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, callfs.unwatchFile(target)
эквивалентен callStatsWatcher.close()
.- Поскольку uv реализован в Linux,
fs.watch
этаrecursive
опция стабильно поддерживается только в win32/darwin. Вы все равно можете попробовать использовать ее в Linuxfs.watch('/[path](path.md)/to', { recursive: true }, handler)
, но можете обнаружить, чтоhandler
время обратного вызова отличается от ожидаемого.
объект
constants
Постоянные объекты модуля fs
1fs_constants fs.constants;
статическая функция
exists
Запросить, существует ли указанный файл или каталог
1static Boolean fs.exists(String path) async;
Параметры звонка:
- path: строка, укажите путь для запроса
Результаты возврата:
- Boolean, возвращает True, чтобы указать, что файл или каталог существует.
access
Запросить права пользователя на указанный файл
1
2static fs.access(String path,
Integer mode = 0) async;
Параметры звонка:
- path: строка, укажите путь для запроса
- mode: целое число, указывает разрешение запроса, по умолчанию указывается, существует ли файл.
link
Создайте файл жесткой ссылки. Этот метод не поддерживается в Windows.
1
2static fs.link(String oldPath,
String newPath) async;
Параметры звонка:
- oldPath: строка, исходный файл
- newPath: строка, файл, который будет создан.
unlink
Удалить указанный файл
1static fs.unlink(String path) async;
Параметры звонка:
- path: строка, указывает путь для удаления.
mkdir
Создать каталог
1
2static fs.mkdir(String path,
Integer mode = 0777) async;
Параметры звонка:
- path: строка, укажите имя создаваемого каталога.
- mode: целое число, определяет права доступа к файлу, Windows игнорирует этот параметр, значение по умолчанию: 0777.
Создать каталог
1
2static 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
Удалить каталог
1static fs.rmdir(String path) async;
Параметры звонка:
- path: строка, указывает имя каталога, который необходимо удалить.
rename
Переименовать файл
1
2static fs.rename(String from,
String to) async;
Параметры звонка:
- from: строка, указывает файл, который нужно переименовать.
- to: строка, указывает новое имя файла, который нужно изменить.
copyFile
Скопируйте src в dest. По умолчанию, если dest уже существует, он перезаписывается.
1
2
3static 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
2static fs.chmod(String path,
Integer mode) async;
Параметры звонка:
- path: строка, файл, определяющий операцию.
- mode: целое число, указывает установленные права доступа.
lchmod
Установите права доступа к указанному файлу. Если файл представляет собой программную ссылку, разрешения, указывающие на файл, не будут изменены. Он доступен только на платформах серий macOS и BSD.
1
2static fs.lchmod(String path,
Integer mode) async;
Параметры звонка:
- path: строка, файл, определяющий операцию.
- mode: целое число, указывает установленные права доступа.
chown
Установите владельца указанного файла. Windows не поддерживает этот метод.
1
2
3static fs.chown(String path,
Integer uid,
Integer gid) async;
Параметры звонка:
- path: Строка, настройки файла.
- uid: целое число, идентификатор пользователя владельца файла.
- gid: целое число, идентификатор группы владельцев файлов.
lchown
Установите владельца указанного файла. Если указанный файл является программной ссылкой, владелец файла, на который он указывает, не будет изменен. Windows не поддерживает этот метод.
1
2
3static fs.lchown(String path,
Integer uid,
Integer gid) async;
Параметры звонка:
- path: Строка, настройки файла.
- uid: целое число, идентификатор пользователя владельца файла.
- gid: целое число, идентификатор группы владельцев файлов.
stat
Запросить основную информацию указанного файла
1static Stat fs.stat(String path) async;
Параметры звонка:
- path: строка, указывает файл, который будет запрошен.
Результаты возврата:
- Stat, возвращает основную информацию о файле
lstat
Запросить основную информацию указанного файла. В отличие от stat, когдаpathЕсли это программная ссылка, возвращаемая информация будет информацией этой программной ссылки, а не информацией указанного файла.
1static Stat fs.lstat(String path) async;
Параметры звонка:
- path: строка, указывает файл, который будет запрошен.
Результаты возврата:
- Stat, возвращает основную информацию о файле
fstat
Запросить основную информацию указанного файла
1static Stat fs.fstat(FileHandle fd) async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
Результаты возврата:
- Stat, возвращает основную информацию о файле
readlink
Прочтите указанный файл программной ссылки. Этот метод не поддерживается в Windows.
1static String fs.readlink(String path) async;
Параметры звонка:
- path: строка, указывает файл мягкой ссылки для чтения.
Результаты возврата:
- String, возвращает имя файла, на которое указывает программная ссылка
realpath
Возвращает абсолютный путь указанного пути. Если указанный путь содержит относительный путь, он также будет расширен.
1static String fs.realpath(String path) async;
Параметры звонка:
- path: строка, указывает путь для чтения
Результаты возврата:
- String, возвращает обработанный абсолютный путь
symlink
Создать файл мягкой ссылки
1
2
3static fs.symlink(String target,
String linkpath,
String type = "file") async;
Параметры звонка:
- target: строка, целевой файл, который может быть файлом, каталогом или несуществующим путем.
- linkpath: строка, файл мягкой ссылки, который будет создан.
- type: строка, тип создаваемого мягкого соединения, необязательные типы: «файл», «каталог», «соединение», по умолчанию — «файл», этот параметр действителен только в Windows, если это «соединение», цель будет создан Путь linkpath должен быть абсолютным путем, и целевой путь будет автоматически преобразован в абсолютный путь.
truncate
Измените размер файла. Если указанная длина превышает размер исходного файла, он будет заполнен «\0», в противном случае лишнее содержимое файла будет потеряно.
1
2static fs.truncate(String path,
Integer len) async;
Параметры звонка:
- path: строка, указывает путь к измененному файлу.
- len: целое число, указывает размер измененного файла.
read
Прочитайте содержимое файла в соответствии с дескриптором файла.
1
2
3
4
5static 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
2static fs.fchmod(FileHandle fd,
Integer mode) async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
- mode: целое число, режим файла
fchown
В зависимости от дескриптора файла измените владельца. Действительно только в системах POSIX.
1
2
3static fs.fchown(FileHandle fd,
Integer uid,
Integer gid) async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
- uid: целое число, идентификатор пользователя
- gid: целое число, идентификатор группы
fdatasync
Синхронизировать данные на диск на основе файлового дескриптора
1static fs.fdatasync(FileHandle fd) async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
fsync
Синхронизировать данные на диск на основе файлового дескриптора
1static fs.fsync(FileHandle fd) async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
readdir
Чтение информации о файле из указанного каталога
1static NArray fs.readdir(String path) async;
Параметры звонка:
- path: строка, указывает каталог для запроса.
Результаты возврата:
- NArray, возвращает массив информации о файле каталога
Чтение информации о файле из указанного каталога
1
2static 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
2static SeekableStream fs.openFile(String fname,
String flags = "r") async;
Параметры звонка:
- fname: Строка, укажите имя файла
- flags: строка, указывает метод открытия файла, по умолчанию — «r», режим только для чтения.
Результаты возврата:
- SeekableStream, возвращает объект открытого файла
Поддерживаются следующие методы флагов параметров:
- 'r' Режим только для чтения, выдает ошибку, если файл не существует.
- Режим чтения и записи 'r+', выдает ошибку, если файл не существует.
- "w" — режим только для записи. Если файл не существует, он будет создан автоматически. Если он существует, он будет очищен.
- В режиме чтения и записи 'w+' файл будет создан автоматически, если он не существует.
- 'a' записывает только метод добавления, и файл будет автоматически создан, если он не существует.
- В режиме добавления чтения и записи «a+» файл будет создан автоматически, если он не существует.
open
открыть файловый дескриптор
1
2
3static 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
закрыть дескриптор файла
1static fs.close(FileHandle fd) async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
openTextStream
Откройте текстовый файл для чтения, записи или того и другого.
1
2static BufferedStream fs.openTextStream(String fname,
String flags = "r") async;
Параметры звонка:
- fname: Строка, укажите имя файла
- flags: строка, указывает метод открытия файла, по умолчанию — «r», режим только для чтения.
Результаты возврата:
- BufferedStream, возвращает объект открытого файла
Поддерживаются следующие методы флагов параметров:
- 'r' Режим только для чтения, выдает ошибку, если файл не существует.
- Режим чтения и записи 'r+', выдает ошибку, если файл не существует.
- "w" — режим только для записи. Если файл не существует, он будет создан автоматически. Если он существует, он будет очищен.
- В режиме чтения и записи 'w+' файл будет создан автоматически, если он не существует.
- 'a' записывает только метод добавления, и файл будет автоматически создан, если он не существует.
- В режиме добавления чтения и записи «a+» файл будет создан автоматически, если он не существует.
readTextFile
Откройте текстовый файл и прочитайте его содержимое
1static String fs.readTextFile(String fname) async;
Параметры звонка:
- fname: Строка, укажите имя файла
Результаты возврата:
- String, возвращает текстовое содержимое файла
readFile
Откройте файл и прочитайте содержимое
1
2static Variant fs.readFile(String fname,
String encoding = "") async;
Параметры звонка:
- fname: Строка, укажите имя файла
- encoding: строка, указывает метод декодирования, по умолчанию декодирование не выполняется.
Результаты возврата:
- Variant, возвращает текстовое содержимое файла
Откройте файл и прочитайте содержимое
1
2static 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
2static Array fs.readLines(String fname,
Integer maxlines = -1);
Параметры звонка:
- fname: Строка, укажите имя файла
- maxlines: целое число, указывает максимальное количество строк, которые будут прочитаны в этот раз.По умолчанию считываются все текстовые строки.
Результаты возврата:
- Array, возвращает массив прочитанных текстовых строк. Если нет данных для чтения или соединение прервано, массив будет пустым.
write
Записать содержимое в файл в соответствии с файловым дескриптором
1
2
3
4
5static 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
4static Integer fs.write(FileHandle fd,
String string,
Integer position = -1,
String encoding = "utf8") async;
Параметры звонка:
- fd:FileHandle, объект дескриптора файла
- string: Строка, строка, которую нужно записать.
- position: целое число, местоположение записи файла, по умолчанию — текущее местоположение файла.
- encoding: строка, указывает метод декодирования, декодирование по умолчанию — utf8.
Результаты возврата:
- Integer, фактическое количество записанных байт
writeTextFile
Создайте текстовый файл и напишите содержимое
1
2static fs.writeTextFile(String fname,
String txt) async;
Параметры звонка:
- fname: Строка, укажите имя файла
- txt: Строка, указывает строку, которую нужно записать.
writeFile
Создать двоичный файл и записать содержимое
1
2
3static fs.writeFile(String fname,
Buffer data,
String opt = "binary") async;
Параметры звонка:
- fname: Строка, укажите имя файла
- data:Buffer, указывает двоичные данные для записи
- opt: строка, указывает параметры записи, будет игнорироваться.
Создать двоичный файл и записать содержимое
1
2
3static fs.writeFile(String fname,
Buffer data,
Object options) async;
Параметры звонка:
- fname: Строка, укажите имя файла
- data:Buffer, указывает двоичные данные для записи
- options: Объект, определяющий параметры записи, будет игнорироваться.
Создайте файл и напишите контент
1
2
3static fs.writeFile(String fname,
String data,
String opt = "utf8") async;
Параметры звонка:
- fname: Строка, укажите имя файла
- data: строка, указывает данные для записи.
- opt: Строка, укажите параметры записи
Создайте файл и напишите контент
1
2
3static 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
2static fs.appendFile(String fname,
Buffer data) async;
Параметры звонка:
- fname: Строка, укажите имя файла
- data:Buffer, указывает двоичные данные для записи
setZipFS
настраиватьzipвиртуальное сопоставление файлов
1
2static fs.setZipFS(String fname,
Buffer data);
Параметры звонка:
clearZipFS
Прозрачныйzipвиртуальное сопоставление файлов
1static fs.clearZipFS(String fname = "");
Параметры звонка:
- fname: строка, указывает путь сопоставления, по умолчанию очищает все кеши.
watch
Просмотрите файл и верните соответствующий объект-наблюдатель.
1static FSWatcher fs.watch(String fname);
Параметры звонка:
- fname: строка, указывает файловый объект, который необходимо наблюдать.
Результаты возврата:
Просмотрите файл и верните соответствующий объект-наблюдатель.
1
2static FSWatcher fs.watch(String fname,
Function callback);
Параметры звонка:
- fname: строка, указывает файловый объект, который необходимо наблюдать.
- callback: Функция,
(evtType: 'change' | 'rename', filename: string) => any
обратный вызов обработки при изменении файлового объекта.
Результаты возврата:
Просмотрите файл и верните соответствующий объект-наблюдатель.
1
2static 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
3static 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
2static StatsWatcher fs.watchFile(String fname,
Function callback);
Параметры звонка:
- fname: строка, указывает файловый объект, который необходимо наблюдать.
- callback: Функция,
(curStats: Stats, prevStats: Stats) => any
обратный вызов обработки при изменении статистики файлового объекта.
Результаты возврата:
- StatsWatcher,StatsWatcherобъект
Просмотрите файл и верните соответствующийStatsWatcherобъект
1
2
3static StatsWatcher fs.watchFile(String fname,
Object options,
Function callback);
Параметры звонка:
- fname: строка, указывает файловый объект, который необходимо наблюдать.
- options: Объект, параметры наблюдения
- callback: Функция,
(curStats: Stats, prevStats: Stats) => any
обратный вызов обработки при изменении статистики файлового объекта.
Результаты возврата:
- StatsWatcher,StatsWatcherобъект
Опции, поддерживаемые опциями, следующие:
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Удалить все обратные вызовы событий наблюдения из
1static fs.unwatchFile(String fname);
Параметры звонка:
- fname: строка, указывает файловый объект, который необходимо наблюдать.
Результаты возврата:
- StatsWatcherобъект
От наблюдения за fnameStatsWatchercallback
Удалите обратный вызов из обратного вызова события наблюдения.
1
2static fs.unwatchFile(String fname,
Function callback);
Параметры звонка:
- fname: строка, указывает файловый объект, который необходимо наблюдать.
- callback: Функция, обратный вызов, который нужно удалить
Результаты возврата:
- StatsWatcherобъект
Даже если обратного вызова больше нетStatsWatcherПри обратном вызове события наблюдения не будет сообщено об ошибках.
постоянный
SEEK_SET
искать константу метода, переходить в абсолютную позицию
1const fs.SEEK_SET = 0;
SEEK_CUR
метод поиска константы, переход к относительному положению текущей позиции
1const fs.SEEK_CUR = 1;
SEEK_END
константа режима поиска, переход к относительной позиции конца файла
1const fs.SEEK_END = 2;