Модуль fs (File System) в Node.js — это мощный инструмент для работы с файловой системой, позволяющий взаимодействовать с файлами и каталогами на вашем сервере. Он встроен в Node.js, поэтому для его использования не нужно устанавливать ничего дополнительного. Давайте рассмотрим, как работает fs и ее ключевые функции.
Модуль fs предоставляет API для взаимодействия с файловой системой способом, близким к стандартным функциям POSIX. Этот модуль используется для таких задач, как чтение и запись файлов, создание каталогов и т. д.
Чтобы использовать модуль fs, вам необходимо указать его в начале скрипта Node.js:
const fs = require('fs');
Существует два основных способа чтения файлов: асинхронно и синхронно.
Этот метод неблокирующий, то есть он не останавливает выполнение вашей программы во время чтения файла.
fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Этот метод является блокирующим, то есть он останавливает выполнение вашей программы до тех пор, пока файл не будет прочитан.
try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); }
Подобно чтению файлов, запись также может выполняться асинхронно или синхронно.
fs.writeFile('example.txt', 'Hello, World!', (err) => { if (err) { console.error(err); return; } console.log('File has been saved!'); });
try { fs.writeFileSync('example.txt', 'Hello, World!'); console.log('File has been saved!'); } catch (err) { console.error(err); }
Если вы хотите добавить контент в существующий файл, не перезаписывая его, используйте метод AppendFile.
fs.appendFile('example.txt', '\nAppended Content', (err) => { if (err) { console.error(err); return; } console.log('Content has been appended!'); });
try { fs.appendFileSync('example.txt', '\nAppended Content'); console.log('Content has been appended!'); } catch (err) { console.error(err); }
Чтобы удалить файл, используйте метод отключения.
fs.unlink('example.txt', (err) => { if (err) { console.error(err); return; } console.log('File deleted!'); });
try { fs.unlinkSync('example.txt'); console.log('File deleted!'); } catch (err) { console.error(err); }
fs.mkdir('newDir', { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('Directory created!'); });
fs.readdir('newDir', (err, files) => { if (err) { console.error(err); return; } console.log('Files in directory:', files); });
fs.rmdir('newDir', { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('Directory deleted!'); });
Отслеживать изменения в файле можно с помощью метода fs.watch:
fs.watch('example.txt', (eventType, filename) => { if (filename) { console.log(`${filename} file Changed!`); } });
Node.js предоставляет потоки файловой системы для обработки больших файлов, которые могут не помещаться в памяти.
const readStream = fs.createReadStream('example.txt', 'utf8'); readStream.on('data', (chunk) => { console.log(chunk); });
const writeStream = fs.createWriteStream('example.txt'); writeStream.write('Hello, '); writeStream.write('World!'); writeStream.end();
Node.js предоставляет простой метод копирования файлов:
fs.copyFile('source.txt', 'destination.txt', (err) => { if (err) { console.error(err); return; } console.log('File copied successfully!'); });
Модуль fs также содержит методы на основе промисов, упрощающие работу с современными функциями JavaScript, такими как async/await.
const fsPromises = require('fs').promises; async function readFile() { try { const data = await fsPromises.readFile('example.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
Модуль fs является универсальным и незаменимым для любого приложения Node.js, которому необходимо взаимодействовать с файловой системой. Понимая его различные методы, эффективно обрабатывая потоки и применяя лучшие практики, вы будете хорошо подготовлены к эффективному и безопасному управлению файловыми операциями в Node.js.
Не забудьте ознакомиться с официальной документацией Node.js для получения самой последней информации и дополнительных функций модуля fs.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3