Все три метода относятся к модулю 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
с одинаковой структурой, содержащий информацию о: