Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

if (err) throw err; // Если что-то пошло не так

process(buffer); // Содержимое файла в параметре buffer

});

Для записи в файл существуют аналогичные функции

writeFile
и
writeFileSync
:

fs.writeFile("config.json", JSON.stringify(userprefs));

Функции, представленные выше, интерпретируют содержимое файла как единственную строку или объект

Buffer
. Кроме того, для чтения и записи файлов интерпретатор Node определяет также API потоков ввода/вывода. Функция ниже копирует содержимое одного файла в другой:

// Копирование файлов с применением API потоков ввода/вывода.

// Чтобы определить момент окончания копирования,

// ей нужно передать функцию обратного вызова

function fileCopy(filename1, filename2, done) {

var input = fs.createReadStream(filenamel); // Входной поток

var output = fs.createWriteStream(filename2); // Выходной поток

input.on("data", function(d) { output.write(d); }); // Копировать

input.on("error", function(err) { throw err; }); // Сообщить об ошибке

input.on("end", function { // По исчерпании входных данных

output.end; // закрыть выходной поток

if (done) done; // И известить вызвавшую программу

});

}

Модуль «fs» включает также несколько методов, возвращающих список содержимого каталогов, атрибуты файлов и т. д. Следующая ниже программа для интерпретатора Node использует синхронные методы для получения списка содержимого каталога, а также для определения размеров файлов и времени последнего их изменения:

#! /usr/local/bin/node

var fs = require("fs"), path = require("path"); // Загрузить модули

var dir = process.cwd; // Текущий каталог

var files = fs.readdirSync(dir); // Или из команд. строки

var files = fs.readdirSync(dir); // Прочитать содер. кат-га

process.stdout.write("Name\tSize\tDate\n"); // Вывести заголовок

files.forEach(function(filename) { // Для каждого файла

var fullname = path.join(dir,filename); // Объед. имя и каталог

var stats = fs.statSync(fullname); // Получить атрибуты файла

if (stats.isDirectory) filename += "/"; // Пометить подкаталоги

process.stdout.write(filename + // Вывести имя файла

"\t" + stats.size + "\t" + // размер файла

stats.mtime + ”\n"); // и время поcл. изменения

});

Обратите внимание на комментарий #! в первой строке, в примере выше. Это специальный комментарий, используемый в Unix, чтобы объявить сценарий, следующий далее, исполняемым, определив файл интерпретатора, который должен его выполнить. Интерпретатор Node игнорирует подобные строки комментариев, когда они находятся в первых строках файлов.

Модуль «net» определяет API для организации взаимодействий по протоколу TCP. (Для выполнения сетевых взаимодействий на основе дейтаграмм можно использовать модуль «dgram».) Ниже приводится пример очень простого сетевого TCP-сервера, реализованного на основе особенностей Node:

// Простой эхо-сервер, реализованный на основе особенностей Node:

// он ожидает соединений на порту с номером 2000 и отправляет обратно клиенту

// все данные, которые получит от него.

var net = require('net');

var server = net.createServer;

server.listen(2000, function {
console.log("Прослушивается порт 2000");
});

server.on("connection", function(stream) {

console.log("Принято соединение от", stream.remoteAddress);

stream.on("data", function(data) { stream.write(data); });

stream.on("end", function(data) { console.log("Соединение закрыто"); });

});

В дополнение к базовому модулю «net» в интерпретаторе Node имеется встроенная поддержка протокола HTTP в виде модуля «http». Особенности его использования демонстрируют примеры, следующие ниже.

Поделиться:
Популярные книги

Туполев

Бодрихин Николай Георгиевич
1327. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Туполев

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

Камень. Книга пятая

Минин Станислав
5. Камень
Фантастика:
боевая фантастика
6.43
рейтинг книги
Камень. Книга пятая

Личный аптекарь императора. Том 5

Карелин Сергей Витальевич
5. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
7.50
рейтинг книги
Личный аптекарь императора. Том 5

Двойник короля 18

Скабер Артемий
18. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 18

Локки 10. Потомок бога

Решетов Евгений Валерьевич
10. Локки
Фантастика:
фэнтези
юмористическое фэнтези
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 10. Потомок бога

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Господин из завтра. Тетралогия.

Махров Алексей
Фантастика:
альтернативная история
8.32
рейтинг книги
Господин из завтра. Тетралогия.

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Обрыв

Гончаров Иван Александрович
Проза:
классическая проза
русская классическая проза
8.93
рейтинг книги
Обрыв

An ordinary sex life

Астердис
Любовные романы:
современные любовные романы
love action
5.00
рейтинг книги
An ordinary sex life

Я граф. Книга XII

Дрейк Сириус
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я граф. Книга XII

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х