Работа с файловой системой

Цель

В этом уроке мы научимся работать с директориями и файлами.

Предварительныетребования

Знание основ JavaScript.

Установить Node.js и npm

Умение работать с модулями Node.js

Введение

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

Для работы с файлами необходимо подключить встроенный модуль required('fs').

Работа с директорией

Для создания директории в Node.js используется функции fs.mkdir(path[, mode], callback) и fs.mkdirSync(path[, mode]). В качестве основного аргумента path они принимают путь, по которому необходимо создать директорию.

Чтобы выяснить существует ли уже необходимая директория можно воспользоваться методам fs.existsSync(path) который возвращает true - если файл существует и false - если нет. При этом метод fs.exists(path, callback) считается устаревшим и не рекомендуется к использованию.

Для получения полного пути к директории текущего модуля используют переменную__dirname

Рассмотрим небольшой пример создания директории:

const fs = require('fs');
let dir = __dirname + '/field';
if (!fs.existsSync(dir)) {
    fs.mkdirSync(dir);
}

Здесь мы создаем директорию, если она еще не была созданна.

Для удаления директорий есть методы fs.rmdir(path, callback) и fs.rmdirSync(path).

Работа с файлами

1.Запись в файл

Для записи файла используются функции fs.writeFile(file, data[, options], callback) и fs.writeFileSync(file, data[, options]), которые в качестве параметра принимает путь к файлу и записываемые данные:

fs.writeFile("hello.txt","Hello!", function(error){
    if(error) throw error; // если возникла ошибка
})

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

При этом если вы не хотите, чтобы файл был перезаписан, а только дозаписан, то необходимо воспользоваться методами fs.appendFile(file, data[, options], callback) и fs.appendFileSync(file, data[, options]).

Для проверки находится ли по заданному пути файл или директория и получения информации о нем используют методы fs.stat(path, callback) и fs.statSync(path).

Пример работы

fs.stat(__filename, function(err, stats) {
    console.log(stats.isFile()); // true
    console.log(stats); // информация о файле
});

Переменная __filename в данном примере возвращает полный путь к файлу модуля в котором была использована.

2. Чтение из файла

Для записи файла используются функции fs.readFile(path[, options], callback) и fs.readFileSync(path[, options]). В метод передается путь к файлу относительно корня проекта или абсолютный путь, а в качестве второго необязательного параметра указывается кодировка для получения текстового содержимого файла. На выходе получаем считанный текст. При асинхронном вызове в качестве третьего параметра передается функция обратного вызова, которая выполняется после завершения чтения.

Пример

fs.readFile('test.txt', {encoding: 'utf-8'}, function(err, data) {
    if (err) throw err
    console.log(data); // выведет текс, который записан в файле test.txt
})

3. Удаление и переименование файла

Переименовать файл можно с помощью методов fs.rename(oldPath, newPath, callback) и fs.renameSync(oldPath, newPath).

Первым параметром необходимо передать старый путь к файлу, а вторым новый с измененным именем.

Удаление происходит с помощью методов fs.unlink(path, callback) и fs.unlinkSync(path).

Практическое задание

С помощью изученного материала програмно создайте в корне проета папку 'folder' и добавте в нее файл 'test1.txt'. Запишите в него произвольную строку, далее прочтите этот файл, после чего переименуйте на 'test2.txt', допишите в полученный файл еще одну строку и удалите файл.

Ссылки

results matching ""

    No results matching ""