JavaScript · Синтаксис · Початковий рівень
Робота з файлами: читання та запис
Практичні вправи по роботі з файлами JavaScript на Node.js: читання тексту, запис рядків, додавання даних, підрахунок рядків і слів, обробка вмісту файлу і створення простих звітів через модуль fs.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Запис і дозапис
#Патерни обробки файлів
#Вправи:
Прочитати весь файл.
#Створіть файл note.txt з текстом "JavaScript files". Потім прочитайте весь вміст файлу за допомогою модуля fs і виведіть його в консоль.
const fs = require("fs");
const fileName = "note.txt";
Рішення
const fs = require("fs");
const fileName = "note.txt";
fs.writeFileSync(fileName, "JavaScript files", "utf8");
const text = fs.readFileSync(fileName, "utf8");
console.log(text);
// або так можна: прочитати файл одразу в console.log
const fs = require("fs");
const fileName = "note.txt";
fs.writeFileSync(fileName, "JavaScript files", "utf8");
console.log(fs.readFileSync(fileName, "utf8"));
Записати рядок у файл.
#У змінній text зберігається повідомлення. Запишіть це повідомлення у файл message.txt, потім прочитайте файл і виведіть його вміст.
const fs = require("fs");
const text = "Повідомлення для файлу";
const fileName = "message.txt";
Рішення
const fs = require("fs");
const text = "Повідомлення для файлу";
const fileName = "message.txt";
fs.writeFileSync(fileName, text, "utf8");
const result = fs.readFileSync(fileName, "utf8");
console.log(result);
Додати рядок у кінець файлу.
#У файлі log.txt вже є рядок "Start". У змінній newLine зберігається новий рядок. Додайте його в кінець файлу з нового рядка та виведіть підсумковий вміст файлу.
const fs = require("fs");
const fileName = "log.txt";
fs.writeFileSync(fileName, "Start", "utf8");
const newLine = "Next step";
Рішення
const fs = require("fs");
const fileName = "log.txt";
fs.writeFileSync(fileName, "Start", "utf8");
const newLine = "Next step";
fs.appendFileSync(fileName, "\n" + newLine, "utf8");
const text = fs.readFileSync(fileName, "utf8");
console.log(text);
Порахувати рядки у файлі.
#Створіть файл tasks.txt з трьома рядками: "Learn", "Practice", "Repeat". Прочитайте файл і виведіть кількість рядків.
const fs = require("fs");
const fileName = "tasks.txt";
Рішення
const fs = require("fs");
const fileName = "tasks.txt";
fs.writeFileSync(fileName, "Learn\nPractice\nRepeat", "utf8");
const text = fs.readFileSync(fileName, "utf8");
const lines = text.split("\n");
console.log("Кількість рядків:", lines.length);
Знайти найдовше слово.
#Створіть файл words.txt зі словами через пробіл: "code javascript file student". Прочитайте файл і виведіть найдовше слово.
const fs = require("fs");
const fileName = "words.txt";
Рішення
const fs = require("fs");
const fileName = "words.txt";
fs.writeFileSync(fileName, "code javascript file student", "utf8");
const text = fs.readFileSync(fileName, "utf8");
const words = text.split(" ");
let longest = words[0];
for (const word of words) {
if (word.length > longest.length) {
longest = word;
}
}
console.log(longest);
Записати список покупок.
#Є масив покупок: ["хліб", "молоко", "сир"]. Запишіть кожен елемент масиву у файл shopping.txt з нового рядка. Потім прочитайте файл і виведіть його вміст.
const fs = require("fs");
const products = ["хліб", "молоко", "сир"];
const fileName = "shopping.txt";
Рішення
const fs = require("fs");
const products = ["хліб", "молоко", "сир"];
const fileName = "shopping.txt";
const text = products.join("\n");
fs.writeFileSync(fileName, text, "utf8");
const result = fs.readFileSync(fileName, "utf8");
console.log(result);
Сума чисел із файлу.
#Створіть файл numbers.txt, де числа записані через пробіл: 5 10 15 20. Прочитайте файл, порахуйте суму чисел і виведіть результат.
const fs = require("fs");
const fileName = "numbers.txt";
Рішення
const fs = require("fs");
const fileName = "numbers.txt";
fs.writeFileSync(fileName, "5 10 15 20", "utf8");
const text = fs.readFileSync(fileName, "utf8");
const numbers = text.split(" ");
let total = 0;
for (const number of numbers) {
total += Number(number);
}
console.log("Сума:", total);
Фільтр рядків за символом.
#Створіть файл emails.txt з кількома рядками, частина з яких містить символ @. Прочитайте файл і запишіть лише рядки з @ у новий файл valid_emails.txt. Потім виведіть вміст нового файлу.
const fs = require("fs");
const fileName = "emails.txt";
const resultFile = "valid_emails.txt";
Рішення
const fs = require("fs");
const fileName = "emails.txt";
const resultFile = "valid_emails.txt";
fs.writeFileSync(fileName, "[email protected]\nhello\[email protected]\ntest", "utf8");
const text = fs.readFileSync(fileName, "utf8");
const lines = text.split("\n");
const validLines = [];
for (const line of lines) {
if (line.includes("@")) {
validLines.push(line);
}
}
fs.writeFileSync(resultFile, validLines.join("\n"), "utf8");
const result = fs.readFileSync(resultFile, "utf8");
console.log(result);
Перезаписати файл у верхньому регістрі.
#Створіть файл text.txt з рядком "hello file". Прочитайте вміст, переведіть його у верхній регістр і перезапишіть цей самий файл новим текстом. Потім виведіть підсумковий вміст.
const fs = require("fs");
const fileName = "text.txt";
Рішення
const fs = require("fs");
const fileName = "text.txt";
fs.writeFileSync(fileName, "hello file", "utf8");
let text = fs.readFileSync(fileName, "utf8");
text = text.toUpperCase();
fs.writeFileSync(fileName, text, "utf8");
const result = fs.readFileSync(fileName, "utf8");
console.log(result);
Звіт із кількістю слів.
#Створіть файл article.txt з кількома словами. Прочитайте файл, порахуйте кількість слів і запишіть у файл report.txt рядок виду "Кількість слів: N". Потім виведіть вміст report.txt.
const fs = require("fs");
const articleFile = "article.txt";
const reportFile = "report.txt";
Рішення
const fs = require("fs");
const articleFile = "article.txt";
const reportFile = "report.txt";
fs.writeFileSync(articleFile, "JavaScript helps practice file reading and writing", "utf8");
const text = fs.readFileSync(articleFile, "utf8");
const words = text.trim().split(/\s+/);
const count = words.length;
fs.writeFileSync(reportFile, `Кількість слів: ${count}`, "utf8");
const result = fs.readFileSync(reportFile, "utf8");
console.log(result);