В 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.