====== Операції з файловою системою в Node.js ====== ===== path ===== Модуль для роботи з шляхами до файлів під різні ОС. ==== join ==== Цей метод приймає аргументами рядки, які будуть перетворені у правильно форматований шлях базуючись на операційній системі, на якій запущена програма. import path from 'node:path'; // приклад для побудови шляху з його частин const somePath = path.join('some_folder', 'some_file.txt'); // somePath буде 'some_folder/some_file.txt' на MacOs // somePath буде 'some_folder\\some_file.txt' на Windows ==== parse ==== Дозволяє отримати інформацію по шляху, який був переданий аргументом import path from 'node:path'; // на MacOs path.parse('/home/user/dir/file.txt'); // { root: '/', // dir: '/home/user/dir', // base: 'file.txt', // ext: '.txt', // name: 'file' } // на Windows path.parse('C:\\\\path\\\\dir\\\\file.txt'); // { root: 'C:\\\\', // dir: 'C:\\\\path\\\\dir', // base: 'file.txt', // ext: '.txt', // name: 'file' } ===== fs ===== дає нам можливості працювати із файлами та папками * Синхронне виконання (погана швидкість) import fs from 'node:fs'; const fileContent = fs.readFileSync('path_to_file'); * Асинхронна через кол-бек функцію (максимальна швидкість але погане читання коду) import fs from 'node:fs'; fs.readFile('path_to_file', (err, fileContent) => { /* ваш код */ }); * Асинхронна через проміси (середня швидкість але гарне читання коду) import fs from 'node:fs/promises'; const fileContent = await fs.readFile('path_to_file'); ==== readFile ==== асинхронного читання даних із файлу. import fs from 'fs/promises'; (async () => { try { const data = await fs.readFile('file.txt', 'utf8'); console.log('Вміст файлу:', data); } catch (err) { console.error('Помилка читання файлу:', err); } })(); ==== writeFile ==== асинхронного запису даних у файл import fs from 'fs/promises'; // Записуємо дані у файл 'output.txt' (async () => { const data = 'Це дані, які ми записуємо у файл.'; try { await fs.writeFile('output.txt', data, 'utf8'); console.log('Дані успішно записані у файл.'); } catch (err) { console.error('Помилка запису у файл:', err); } })(); ==== appendFile ==== асинхронного додавання даних у кінець файлу import fs from 'fs/promises'; // Додаємо дані до файлу 'output.txt' (async () => { const data = 'Це дані, які ми додаємо до файлу.'; try { await fs.appendFile('output.txt', data, 'utf8'); console.log('Дані успішно додані до файлу.'); } catch (err) { console.error('Помилка додавання даних до файлу:', err); } })(); ==== rename ==== асинхронного перейменування або переміщення файлу чи каталогу import fs from 'fs/promises'; // Перейменовуємо або переміщуємо файл чи каталог зі шляху 'oldfile.txt' до 'newfile.txt' (async () => { try { await fs.rename('oldfile.txt', 'newfile.txt'); console.log('Файл або каталог успішно перейменовано або переміщено.'); } catch (err) { console.error('Помилка перейменування або переміщення:', err); } })(); ==== unlink ==== метод використовується для асинхронного видалення файлу import fs from 'fs/promises'; // Видаляємо файл за шляхом 'file.txt' (async () => { try { await fs.unlink('file.txt'); console.log('Файл успішно видалено.'); } catch (err) { console.error('Помилка видалення файлу:', err); } })(); ==== readdir ==== для асинхронного отримання списку файлів та каталогів у заданому каталозі. import fs from 'fs/promises'; // Отримуємо список файлів і каталогів у поточному каталозі (async () => { try { const files = await fs.readdir('.'); console.log('Список файлів і каталогів:', files); } catch (err) { console.error('Помилка отримання списку файлів і каталогів:', err); } })(); ==== access ==== перевіряти наявність папок за допомогою цього методу import fs from 'fs/promises'; // Перевіряємо доступність файлу або каталогу за вказаним шляхом (async () => { const path = 'file.txt'; try { await fs.access(path); console.log(`Файл або каталог '${path}' доступний.`); } catch (err) { if (err.code === 'ENOENT') { console.log(`Файл або каталог '${path}' не існує.`); } else { console.error( `Помилка перевірки доступності файлу або каталогу '${path}':`, err, ); } } })();