Книга: Выразительный JavaScript
Модуль file system
Модуль file system
Один из самых востребованных встроенных модулей Node – модуль “fs”
, что означает «файловая система». Модуль обеспечивает функционал для работы с файлами и директориями.
К примеру, есть функция readFile
, читающая файл и делающая обратный вызов с содержимым файла.
var fs = require("fs");
fs.readFile("file.txt", "utf8", function(error, text) {
if (error)
throw error;
console.log("А в файле том было:", text);
});
Второй аргумент readFile
задаёт кодировку символов, в которой нужно преобразовывать содержимое файла в строку. Текст можно преобразовать в двоичные данные разными способами, но самым новым из них является UTF-8. Если у вас нет оснований полагать, что в файле содержится текст в другой кодировке, можно смело передавать параметр "utf8"
. Если вы не задали кодировку, Node выдаст вам данные в двоичной кодировке в виде объекта Buffer
, а не строки. Это массивоподобный объект, содержащий байты из файла.
var fs = require("fs");
fs.readFile("file.txt", function(error, buffer) {
if (error)
throw error;
console.log("В файле было ", buffer.length, " байт.",
"Первый байт:", buffer[0]);
});
Схожая функция, writeFile
, используется для записи файла на диск.
var fs = require("fs");
fs.writeFile("graffiti.txt", "Здесь был Node ", function(err) {
if (err)
console.log("Ничего не вышло, и вот почему:", err);
else
console.log("Запись успешна. Все свободны.");
});
Здесь задавать кодировку не нужно, потому что writeFile
полагает, что если ей на запись дали строку, а не объект Buffer
, то её надо выводить в виде текста с кодировкой по умолчанию UTF-8.
Модуль “fs”
содержит много полезного: функция readdir
возвращает список файлов директории в виде массива строк, stat
вернёт информацию о файле, rename
переименовывает файл, unlink
удаляет, и т. п. См. документацию на nodejs.org.
Многие функции “fs”
имеют как синхронный, так и асинхронный вариант. К примеру, есть синхронный вариант функции readFile
под названием readFileSync
.
var fs = require("fs");
console.log(fs.readFileSync("file.txt", "utf8"));
Синхронные функции использовать проще и полезнее для простых скриптов, где дополнительная скорость асинхронного метода не важна. Но заметьте – на время выполнения синхронного действия ваша программа полностью останавливается. Если ей надо отвечать на ввод пользователя или другим программам по сети, затыки ожидания синхронного I/O приводят к раздражающим задержкам.
- Shared Cache file
- Безопасность внешних таблиц. Параметр EXTERNAL FILE DIRECTORY
- Chapter 13. rc.firewall file
- System tools used for debugging
- Integrated Secure Communications System
- 4.3.3. Makefile Targets
- Как работает модуль оперативной памяти
- Что это за файл – pagefile.sys?
- Для чего нужны папки Windows, Documents and Settings, Program Files и Temp?
- Когда включаю компьютер, при загрузке пишется Insert system disk and press enter. Что нужно делать?
- Можно ли указать использование по умолчанию вместо C:Program Files другого каталога для установки программ?
- На всех дисках моего компьютера есть папка System Volume Information. Для чего она нужна?