Все три метода относятся к модулю fs (File System) и используются для получения информации о файлах, но имеют важные различия в поведении и применении.
Основной метод для получения информации о файле или директории по указанному пути.
const fs = require('fs');
fs.stat('/path/to/file', (err, stats) => {
if (err) throw err;
console.log(stats);
});
Работает с файловым дескриптором (file descriptor) вместо пути.
const fs = require('fs');
fs.open('/path/to/file', 'r', (err, fd) => {
if (err) throw err;
fs.fstat(fd, (err, stats) => {
if (err) throw err;
console.log(stats);
fs.close(fd);
});
});
Аналогичен fs.stat, но не следует символическим ссылкам.
const fs = require('fs');
fs.lstat('/path/to/symlink', (err, stats) => {
if (err) throw err;
console.log(stats.isSymbolicLink()); // true для симлинков
});
Рассмотрим ситуацию с символической ссылкой /link указывающей на /real/file:
| Метод | Возвращаемая информация | isSymbolicLink() |
|---|---|---|
| fs.stat | О /real/file | false |
| fs.lstat | О /link | true |
| fs.fstat | Зависит от того, открыли ли сам симлинк или конечный файл |
fs.fstat - самый быстрый (работает с уже открытым файлом)fs.lstat - быстрее fs.stat когда нужно проверить симлинки (не требует разрешения ссылки)fs.stat - медленнее из-за необходимости разрешать пути и симлинкиfs.stat когда нужна информация о конечном файле (разрешает симлинки)fs.lstat когда нужно работать именно с символической ссылкойfs.fstat когда файл уже открыт и у вас есть файловый дескрипторВсе три метода возвращают объект fs.Stats с одинаковой структурой, содержащий информацию о: