JavaScript · Syntax · Beginner
Working with files: reading and writing
Hands-on exercises for working with files in JavaScript on Node.js: reading text, writing lines, appending data, counting lines and words, processing file contents, and creating simple reports using the fs module.
Quick topic start and explanations before exercises (exercises below):
Writing and appending
#File processing patterns
#Exercises:
Read the whole file.
#const fs = require("fs");
const fileName = "note.txt";
Solution
const fs = require("fs");
const fileName = "note.txt";
fs.writeFileSync(fileName, "JavaScript files", "utf8");
const text = fs.readFileSync(fileName, "utf8");
console.log(text);
// or like this: read the file directly inside console.log
const fs = require("fs");
const fileName = "note.txt";
fs.writeFileSync(fileName, "JavaScript files", "utf8");
console.log(fs.readFileSync(fileName, "utf8"));
Write a string to a file.
#const fs = require("fs");
const text = "Message for file";
const fileName = "message.txt";
Solution
const fs = require("fs");
const text = "Message for file";
const fileName = "message.txt";
fs.writeFileSync(fileName, text, "utf8");
const result = fs.readFileSync(fileName, "utf8");
console.log(result);
Add a line to the end of a file.
#const fs = require("fs");
const fileName = "log.txt";
fs.writeFileSync(fileName, "Start", "utf8");
const newLine = "Next step";
Solution
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);
Count lines in a file.
#const fs = require("fs");
const fileName = "tasks.txt";
Solution
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("Line count:", lines.length);
Find the longest word.
#const fs = require("fs");
const fileName = "words.txt";
Solution
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);
Write a shopping list.
#const fs = require("fs");
const products = ["bread", "milk", "cheese"];
const fileName = "shopping.txt";
Solution
const fs = require("fs");
const products = ["bread", "milk", "cheese"];
const fileName = "shopping.txt";
const text = products.join("\n");
fs.writeFileSync(fileName, text, "utf8");
const result = fs.readFileSync(fileName, "utf8");
console.log(result);
Sum of numbers from a file.
#const fs = require("fs");
const fileName = "numbers.txt";
Solution
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("Sum:", total);
Filter lines by symbol.
#const fs = require("fs");
const fileName = "emails.txt";
const resultFile = "valid_emails.txt";
Solution
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);
Rewrite a file in uppercase.
#const fs = require("fs");
const fileName = "text.txt";
Solution
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);
Report with word count.
#const fs = require("fs");
const articleFile = "article.txt";
const reportFile = "report.txt";
Solution
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, `Word count: ${count}`, "utf8");
const result = fs.readFileSync(reportFile, "utf8");
console.log(result);