TGViewer
Node.JS [ru] | Серверный JavaScript Node.JS [ru] | Серверный JavaScript @we_use_js · 10.7K subscribers
Post #3891 2.53K
👩‍💻 Задачка по NodeJS

Создайте приложение на Node.js, которое принимает путь к текстовому файлу в качестве аргумента командной строки, подсчитывает количество строк, слов и символов в файле, а затем сохраняет результат в stats.json. Программа также должна уметь выводить статистику в консоль.

Программа должна уметь выводить статистику по папке в консоль и сохранять её в файл.

➡️ Пример:

• node app.js report /path/to/file.txt — создает файл stats.json с количеством строк, слов и символов в файле.
• node app.js print /path/to/file.txt — выводит статистику по файлу в консоль.

Решение задачи ⬇️

const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);

const action = process.argv[2];
const filePath = process.argv[3];
const reportFile = 'stats.json';

if (!action || !filePath) {
console.log('Используйте: node app.js <report|print> <путь к файлу>');
process.exit(1);
}

async function analyzeFile(file) {
const content = await readFile(file, 'utf8');
const lines = content.split('\n').length;
const words = content.split(/\s+/).filter(Boolean).length;
const chars = content.length;

return { lines, words, chars };
}

async function generateReport(file) {
const stats = await analyzeFile(file);
fs.writeFile(reportFile, JSON.stringify(stats, null, 2), (err) => {
if (err) {
console.error('Ошибка при записи отчета:', err);
process.exit(1);
}
console.log(`Отчет сохранен в ${reportFile}`);
});
}

async function printReport(file) {
const stats = await analyzeFile(file);
console.log(`Файл: ${file}`);
console.log(`Количество строк: ${stats.lines}`);
console.log(`Количество слов: ${stats.words}`);
console.log(`Количество символов: ${stats.chars}`);
}

if (action === 'report') {
generateReport(filePath);
} else if (action === 'print') {
printReport(filePath);
} else {
console.log('Неизвестное действие. Используйте "report" или "print".');
}
  • 👍 4
  • ❤ 1
  • 🤗 1
More from @we_use_js
  1. Oct 9, 2026[Перевод] Next.js 16.4 приехал Ветку 16.x пилили не от скуки: туда потихоньку вкатывали но…
  2. Oct 9, 2026JPEG XL приполз в Chrome Chrome 155, который выкатили днём раньше, теперь умеет картинки J…
  3. Oct 8, 2026Mistral выкатила Mistral Large 4 — Le Chonk Триллион параметров в тушке, но реально работа…
  4. Oct 8, 2026Как вытянуть длительность видео по ссылке, стянув всего 7% файла — и с чего вдруг в заголо…
  5. Oct 8, 2026Google выкатила EmbeddingGemma 2 — и это, на минуточку, первая открытая мультимодальная мо…
  6. Oct 8, 2026Post #5815
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →