Для работы с файлами используется встроенный модуль fs. Ссылка на подробную документацию по этому модулю: File System
Чтобы использовать модуль подключаем его в начале скрипта
Все операции с файлами можно делать синхронно и асинхронно. Синхронные операции всегда ждут когда действие с файлом выполнится и возвращают результат. При этом блокируется основной поток и весь сервер ждет. Асинхронные же операции не выполняются сразу после вызова. Результат работы становится известным позже, и для того, чтобы оповестить приложение о полученных значениях, асинхронная функция вызывает другую функцию (callback), которую мы передаем в аргументах при запуске.
Как прочитать содержимое файла?
Давайте для примера прочитаем что-то из файла.
Предопределенная переменная
Если указанный файл не найден, то при синхронном чтении будет выброшено исключение (Exception), а в асинхронном варианте ошибка прийдет в callback функцию в первом аргументе err.
Как записать текст в файл?
Теперь запишем какой-нибудь текст в файл.
Примечание: здесь и далее будем пользоваться только асинхронными функциями, при необходимости их можно легко будет переделать под синхронные (как в примерах выше).
При каждом вызове этого кода файл будет перезаписываться. Если же мы хотим дописывать что-то в конец файла (например, для ведения логов), то нужно использовать
В начале фрагмента текста который нужно записать в файл мы добавили символы
Как удалить файл?
Теперь удалим наш файл hello.txt
Обратите внимание что здесь и в примере выше в callback функцию передается только один аргумент
Чтобы использовать модуль подключаем его в начале скрипта
JavaScript:
var fs = require('fs');
Все операции с файлами можно делать синхронно и асинхронно. Синхронные операции всегда ждут когда действие с файлом выполнится и возвращают результат. При этом блокируется основной поток и весь сервер ждет. Асинхронные же операции не выполняются сразу после вызова. Результат работы становится известным позже, и для того, чтобы оповестить приложение о полученных значениях, асинхронная функция вызывает другую функцию (callback), которую мы передаем в аргументах при запуске.
Как прочитать содержимое файла?
Давайте для примера прочитаем что-то из файла.
JavaScript:
var fs = require('fs'); // подключаем модуль
// Асинхронное чтение
fs.readFile( __dirname + '/test.txt', function(err,data){
console.log('async read: ' + data);
});
//Синхронное чтение
var data = fs.readFileSync(__dirname + '/test2.txt');
console.log('sync read: ' + data);
__dirname
содержить путь к папке в которой лежит данный скрипт.Если указанный файл не найден, то при синхронном чтении будет выброшено исключение (Exception), а в асинхронном варианте ошибка прийдет в callback функцию в первом аргументе err.
JavaScript:
// Асинхронное чтение
fs.readFile( __dirname + '/notexist.txt', function(err,data){
if(err){
return console.log('async read error: ' + err); // async read error: Error: ENOENT: no such file or directory, open 'C:\RAGEMP\server-files\packages\fs-test\notexist.txt'
}
console.log('async read: ' + data);
});
//Синхронное чтение
try{
var data = fs.readFileSync(__dirname + '/notexist.txt');
console.log('sync read: ' + data);
}catch(e){
console.error('sync read error: ' + e); // sync read error: Error: ENOENT: no such file or directory, open 'C:\RAGEMP\server-files\packages\fs-test/notexist.txt'
}
Как записать текст в файл?
Теперь запишем какой-нибудь текст в файл.
Примечание: здесь и далее будем пользоваться только асинхронными функциями, при необходимости их можно легко будет переделать под синхронные (как в примерах выше).
JavaScript:
fs.writeFile(__dirname + '/hello.txt', "Hello, world!", function(err){
if(err)throw err;
console.log('Текст записан в файл'); // выведем сообщение когда запись будет завершена
});
При каждом вызове этого кода файл будет перезаписываться. Если же мы хотим дописывать что-то в конец файла (например, для ведения логов), то нужно использовать
fs.appendFile
JavaScript:
fs.appendFile(__dirname + '/hello.txt', '\r\nНовая строка текста', (err) => {
if (err) throw err;
console.log('Текст добавлен в файл');
});
В начале фрагмента текста который нужно записать в файл мы добавили символы
\r\n
- комбинация этих символов позволяет сделать перенос строка, чтобы наш текст добавился не в ту же строку, а с новой.Как удалить файл?
Теперь удалим наш файл hello.txt
JavaScript:
fs.unlink(__dirname + '/hello.txt', (err) => {
if (err) throw err;
console.log('hello.txt был удален');
});
Обратите внимание что здесь и в примере выше в callback функцию передается только один аргумент
err
, который при наличии ошибок будет не пустой (что мы и проверяем и выбрасываем исключение).
Последнее редактирование: