Node.js FS — Файловая система

Node.js FS — Файловая система

От автора: Node реализует ввод/вывод файлов с использованием простых оболочек для стандартных функций POSIX. Модуль Node js FS (File System) может быть импортирован с помощью синтаксиса, представленного ниже.

 

var fs = require("fs")

Синхронная и асинхронная формы

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

Пример

Создайте текстовый файл с именем input.txt со следующим содержимым:

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Создайте файл js с именем main.js со следующим кодом:

Фреймворк VUE JS: быстрый старт, первые результаты

Получите бесплатный курс и создайте веб-приложение на трендовой Frontend-технологии VUE JS с полного нуля

Узнать подробнее
var fs = require("fs");
 
// Асинхронное считывание
fs.readFile('input.txt', function (err, data) {
 if (err) {
 return console.error(err);
 }
 console.log("Asynchronous read: " + data.toString());
});
 
// Синхронное считывание
var data = fs.readFileSync('input.txt');
console.log("Synchronous read: " + data.toString());
 
console.log("Program Ended");

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Synchronous read: Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
 
Program Ended
Asynchronous read: Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

В следующих разделах этой главы представлен набор практических примеров основных методов для работы с файлами.

Открытие файла

Синтаксис. Ниже приведен синтаксис метода для открытия файла в асинхронном режиме:

fs.open(path, flags[, mode], callback)

Параметры

Ниже приводится описание используемых параметров -

path — это строка с именем файла, включая путь к нему.

flags — указывают режим работы с файлом, который нужно открыть. Все возможные значения приведены ниже.

mode — устанавливает режим файла (права доступа), но только если файл был создан. По умолчанию — 0666, чтение и запись.

callback — это функция обратного вызова, которая принимает два аргумента (err, fd).

Flags

Флаги для операций чтения/записи –

r — Открыть файл для чтения. Если файл не существует, добавляется исключение.

г+ — Открыть файл для чтения и записи. Если файл не существует, добавляется исключение.

rs — Открыть файл для чтения в синхронном режиме.

rs+ — Открыть файл для чтения и записи, запросив у ОС открыть его в синхронном режиме. Смотрите примечания для «rs» относительно использования данного флага.

w — Открыть файл для записи. Файл создается (если он не существует) или усекается (если он существует).

wx — Работает так же как «w», но не выполняется, если путь существует.

w+ — Открыть файл для чтения и записи. Если файл не существует, он создается, если файл существует, он усекается.

wx+ — Работает так же как «w+», но не выполняется, если путь существует.

a — Открыть файл для дополнения. Если файл не существует, он создается.

ax — Работает как «а», но не выполняется, если путь существует.

a+ — Открыть файл для чтения и расширения. Если файл не существует, он создается.

ах+ — Работает так же как «a+», но не выполняется, если путь существует.

Пример

Создайте файл js с именем main.js, содержащий следующий код, чтобы открыть файл input.txt для чтения и записи.

var fs = require("fs");
 
// Асинхронное открытие файла
console.log("Going to open file!");
fs.open('input.txt', 'r+', function(err, fd) {
 if (err) {
 return console.error(err);
 }
  console.log("File opened successfully!"); 
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to open file!
File opened successfully!

Получение информации о файлах

Синтаксис. Ниже приведен синтаксис метода для получения информации о файле:

fs.stat(path, callback)

Параметры

Ниже приводится описание используемых параметров -

path — это строка с именем файла, включая путь к нему.

callback — это функция обратного вызова, которая принимает два аргумента (err, stats), где stats — это объект типа fs.Stats, который приведен в примере ниже.

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

stats.isFile() — Возвращает true, если тип файла — простой файл.

stats.isDirectory() — Возвращает true, если тип файла — каталог.

stats.isBlockDevice() — Возвращает true, если тип файла — блочное устройство.

stats.isCharacterDevice() — Возвращает true, если тип файла — символьное устройство.

stats.isSymbolicLink() — Возвращает true, если тип файла — символьная ссылка.

stats.isFIFO() — Возвращает true, если тип файла — FIFO.

stats.isSocket() — Возвращает true, если тип файла — сокет.

Пример

Создайте файл js с именем main.js со следующим кодом:

var fs = require("fs");
 
console.log("Going to get file info!");
fs.stat('input.txt', function (err, stats) {
 if (err) {
 return console.error(err);
 }
 console.log(stats);
 console.log("Got file info successfully!");
 
 // Проверка типа файла
 console.log("isFile ? " + stats.isFile());
 console.log("isDirectory ? " + stats.isDirectory()); 
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to get file info!
{ 
 dev: 1792,
 mode: 33188,
 nlink: 1,
 uid: 48,
 gid: 48,
 rdev: 0,
 blksize: 4096,
 ino: 4318127,
 size: 97,
 blocks: 8,
 atime: Sun Mar 22 2015 13:40:00 GMT-0500 (CDT),
 mtime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT),
 ctime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT) 
}
Got file info successfully!
isFile ? true
isDirectory ? false

Запись файла

Синтаксис. Ниже приведен синтаксис одного из способов записи в файл:

fs.writeFile(filename, data[, options], callback)

Этот метод перезаписывает файл, если файл уже существует. Если вы хотите дописать что-то в существующий файл, вы должны использовать другой доступный метод.

Параметры

Ниже приводится описание используемых параметров -

path — это строка с именем файла, включая путь к нему.

data – это строка или буфер, которые должны быть записаны в файл.

options — Третий параметр — это объект, который содержит {encoding, mode, flag}. По умолчанию encoding — utf8, mode — восьмеричное значение 0666 и flag — w,

callback — это функция обратного вызова, которая получает единственный параметр err, который возвращает ошибку в случае возникновения ошибки записи.

Пример

Создайте файл js с именем main.js, содержащий следующий код -

var fs = require("fs");
 
console.log("Going to write into existing file");
fs.writeFile('input.txt', 'Simply Easy Learning!',  function(err) {
 if (err) {
 return console.error(err);
 }
 
 console.log("Data written successfully!");
 console.log("Let's read newly written data");
 fs.readFile('input.txt', function (err, data) {
 if (err) {
 return console.error(err);
 }
 console.log("Asynchronous read: " + data.toString());
 });
});

Теперь запустите main.js:

$ node main.js

В результате вы получите следующее.

Going to write into existing file
Data written successfully!
Let's read newly written data
Asynchronous read: Simply Easy Learning!

Чтение файла

Синтаксис. Ниже приведен синтаксис одного из методов чтения из файла:

Фреймворк VUE JS: быстрый старт, первые результаты

Получите бесплатный курс и создайте веб-приложение на трендовой Frontend-технологии VUE JS с полного нуля

Узнать подробнее
fs.read(fd, buffer, offset, length, position, callback)

Этот метод использует для чтения файла файловый дескриптор. Если вы хотите считать файл напрямую, с помощью имени файла, используйте другой метод.

Параметры

Ниже приводится описание используемых параметров:

fd — это дескриптор файла, возвращаемый функцией fs.open().

buffer — это буфер, в который будут записаны данные.

offset — это смещение в буфере к позиции начала записи.

length — это целое число, определяющее количество прочитанных байтов.

position — Это целое число, указывающее, с какой позиции должно начинаться чтение файла. Если позиция равна нулю, данные будут считываться с текущей позиции файла.

callback — это функция обратного вызова, которая принимает три аргумента (err, bytesRead, buffer).

Пример

Создайте файл js с именем main.js со следующим кодом:

var fs = require("fs");
var buf = new Buffer(1024);
 
console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
 if (err) {
 return console.error(err);
 }
 console.log("File opened successfully!");
 console.log("Going to read the file");
 fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
 if (err){
 console.log(err);
 }
 console.log(bytes + " bytes read");
 
 // Выводим только считанные байты.
 if(bytes > 0){
 console.log(buf.slice(0, bytes).toString());
 }
 });
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to open an existing file
File opened successfully!
Going to read the file
97 bytes read
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Закрытие файла

Синтаксис. Ниже приведен синтаксис для закрытия открытого файла:

fs.close(fd, callback)

Параметры

Ниже приводится описание используемых параметров -

fd — это дескриптор файла, возвращаемый методом fs.open().

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

Пример

Создайте файл js с именем main.js, содержащий следующий код:

var fs = require("fs");
var buf = new Buffer(1024);
 
console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
 if (err) {
 return console.error(err);
 }
 console.log("File opened successfully!");
 console.log("Going to read the file");
 
 fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
 if (err){
 console.log(err);
 }
 
 // Выводим только считанные байты.
 if(bytes > 0){
 console.log(buf.slice(0, bytes).toString());
 }
 
 // Закрытие открытого файла.
 fs.close(fd, function(err){
 if (err){
 console.log(err);
 } 
 console.log("File closed successfully.");
 });
 });
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to open an existing file
File opened successfully!
Going to read the file
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
 
File closed successfully.

Усечение файла

Синтаксис. Ниже приведен синтаксис метода усечения открытого файла:

fs.ftruncate(fd, len, callback)

Параметры

Ниже приводится описание используемых параметров -

fd — это дескриптор файла, возвращаемый функцией fs.open().

len — длина файла, до которой он будет усечен.

callback — это функция обратного вызова. Никакие аргументы кроме возможных исключений не передаются функции обратного вызова завершения.

Пример

Создайте файл js с именем main.js, содержащий следующий код:

var fs = require("fs");
var buf = new Buffer(1024);
 
console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
 if (err) {
 return console.error(err);
 }
 console.log("File opened successfully!");
 console.log("Going to truncate the file after 10 bytes");
 
 // Усечение открытого файла.
 fs.ftruncate(fd, 10, function(err){
 if (err){
 console.log(err);
 } 
 console.log("File truncated successfully.");
 console.log("Going to read the same file"); 
 
 fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
 if (err){
 console.log(err);
 }
 
 // Выводим только считанные файлы.
 if(bytes > 0){
 console.log(buf.slice(0, bytes).toString());
 }
 
 // Закрытие открытого файла.
 fs.close(fd, function(err){
 if (err){
 console.log(err);
 } 
 console.log("File closed successfully.");
 });
 });
 });
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to open an existing file
File opened successfully!
Going to truncate the file after 10 bytes
File truncated successfully.
Going to read the same file
Tutorials 
File closed successfully.

Удаление файла

Синтаксис. Ниже приведен синтаксис метода для удаления файла:

fs.unlink(path, callback)

Параметры

Ниже приводится описание используемых параметров -

path — это имя файла, включая путь к нему.

callback — это функция обратного вызова. Никакие аргументы кроме возможных исключений не передаются функции обратного вызова завершения.

Пример

Создадим файл js с именем main.js, содержащий следующий код:

var fs = require("fs");
 
console.log("Going to delete an existing file");
fs.unlink('input.txt', function(err) {
 if (err) {
 return console.error(err);
 }
 console.log("File deleted successfully!");
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to delete an existing file
File deleted successfully!

Создание директории

Синтаксис. Ниже приведен синтаксис метода для создания директории:

fs.mkdir(path[, mode], callback)

Параметры

Ниже приводится описание используемых параметров -

path — это имя директории, включая путь к ней.

mode – это права доступа к директории. По умолчанию — 0777.

callback — это функция обратного вызова. Никакие аргументы кроме возможных исключений не передаются функции обратного вызова завершения.

Пример

Создайте файл js с именем main.js, имеющий следующий код:

var fs = require("fs");
 
console.log("Going to create directory /tmp/test");
fs.mkdir('/tmp/test',function(err){
 if (err) {
 return console.error(err);
 }
 console.log("Directory created successfully!");
});

Теперь запустите main.js -

$ node main.js

В результате вы получите следующее.

Going to create directory /tmp/test
Directory created successfully!

Чтение директории

Синтаксис. Ниже приведен синтаксис метода для чтения директории -

fs.readdir(path, callback)

Параметры

Ниже приводится описание используемых параметров:

path — это имя директории, включая путь к ней.

callback — это функция обратного вызова, которая принимает два аргумента (err, files), где files — это массив имен файлов в директории, не включающих «.», а также ‘..’.

Пример

Создайте файл js с именем main.js, имеющий следующий код:

var fs = require("fs");
 
console.log("Going to read directory /tmp");
fs.readdir("/tmp/",function(err, files){
 if (err) {
 return console.error(err);
 }
 files.forEach( function (file){
 console.log( file );
 });
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test
test.txt

Удаление директории

Синтаксис. Ниже приведен синтаксис метода для удаления директории:

fs.rmdir(path, callback)

Параметры

Ниже приводится описание используемых параметров:

path — это имя директории, включая путь к ней.

callback — это функция обратного вызова. Никакие аргументы кроме возможных исключений не передаются функции обратного вызова завершения.

Пример

Создайте файл js с именем main.js, имеющий следующий код -

var fs = require("fs");
 
console.log("Going to delete directory /tmp/test");
fs.rmdir("/tmp/test",function(err){
 if (err) {
 return console.error(err);
 }
 console.log("Going to read directory /tmp");
 
 fs.readdir("/tmp/",function(err, files){
 if (err) {
 return console.error(err);
 }
 files.forEach( function (file){
 console.log( file );
 });
 });
});

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test.txt

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк VUE JS: быстрый старт, первые результаты

Получите бесплатный курс и создайте веб-приложение на трендовой Frontend-технологии VUE JS с полного нуля

Узнать подробнее

Курс по NodeJS. Основы

Прямо сейчас посмотрите курс по NodeJS!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree