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);