5 простых способов узнать размер файла в JavaScript: изучение fs.stat()

В JavaScript существует несколько методов получения размера файла в файловой системе. Один из часто используемых подходов — использование функции fs.stat(). В этой статье мы рассмотрим различные методы получения размера файла с помощью fs.stat()и предоставим вам практические примеры кода. Итак, давайте углубимся и узнаем, как получить размер файла в JavaScript!

Метод 1: использование fs.stat() с fs.promises
Модуль fs в Node.js предоставляет встроенный метод fs.stat()для получения информации о файле. Используя API fs.promises, мы можем заставить функцию возвращать обещание, что позволит нам использовать async/awaitдля более чистого кода. Вот пример:

const fs = require('fs').promises;
async function getFileSize(filePath) {
  try {
    const stats = await fs.stat(filePath);
    return stats.size;
  } catch (error) {
    console.error('Error:', error);
  }
}
const filePath = 'path/to/file.txt';
getFileSize(filePath)
  .then(size => console.log(`File size: ${size} bytes`))
  .catch(error => console.error('Error:', error));

Метод 2: использование fs.statSync()
Если вы предпочитаете синхронный подход, вы можете использовать fs.statSync(), который блокирует выполнение до тех пор, пока не будет получена информация о файле. Вот пример:

const fs = require('fs');
function getFileSizeSync(filePath) {
  try {
    const stats = fs.statSync(filePath);
    return stats.size;
  } catch (error) {
    console.error('Error:', error);
  }
}
const filePath = 'path/to/file.txt';
const size = getFileSizeSync(filePath);
console.log(`File size: ${size} bytes`);

Метод 3: использование fs.promises.stat() с fs.promises.readFile()
Другой подход — объединить функции fs.promises.stat()и fs.promises.readFile(). Этот метод полезен, если вам нужно прочитать содержимое файла вместе с его размером. Вот пример:

const fs = require('fs').promises;
async function getFileSizeWithContent(filePath) {
  try {
    const stats = await fs.stat(filePath);
    const content = await fs.readFile(filePath, 'utf8');
    return { size: stats.size, content };
  } catch (error) {
    console.error('Error:', error);
  }
}
const filePath = 'path/to/file.txt';
getFileSizeWithContent(filePath)
  .then(result => console.log(`File size: ${result.size} bytes\nContent: ${result.content}`))
  .catch(error => console.error('Error:', error));

Метод 4: использование библиотеки размера файла
Если вам нужно отформатировать размер файла в удобочитаемом формате, вы можете использовать библиотеку filesize. Эта библиотека предоставляет различные параметры для настройки вывода. Вот пример:

const fs = require('fs');
const filesize = require('filesize');
function getFileSizeFormatted(filePath) {
  try {
    const stats = fs.statSync(filePath);
    return filesize(stats.size);
  } catch (error) {
    console.error('Error:', error);
  }
}
const filePath = 'path/to/file.txt';
const size = getFileSizeFormatted(filePath);
console.log(`File size: ${size}`);

Метод 5: использование библиотеки быстрой статистики.
Другой альтернативой является библиотека fast-stats, которая обеспечивает высокопроизводительный способ получения информации о файлах. Вот пример:

const fastStats = require('fast-stats');
function getFileSizeFast(filePath) {
  try {
    const stats = fastStats.statSync(filePath);
    return stats.size;
  } catch (error) {
    console.error('Error:', error);
  }
}
const filePath = 'path/to/file.txt';
const size = getFileSizeFast(filePath);
console.log(`File size: ${size} bytes`);

В этой статье мы рассмотрели пять различных методов получения размера файла в JavaScript. Мы рассмотрели использование fs.stat()как в асинхронном, так и в синхронном подходе, объединив его с fs.readFile()для чтения содержимого файла, и продемонстрировали, как форматировать размер файла с помощью filesizeбиблиотека. Кроме того, мы представили библиотеку fast-statsдля высокопроизводительного определения размера файлов. Имея в своем распоряжении эти методы, вы можете легко получить размеры файлов в своих приложениях JavaScript.