Автор оригинала: David Landup.
Вступление
Работа с файлами – это общая задача с любым языком программирования. Манипуляция файлов требует, чтобы мы узнали их местоположение. Один из самых фундаментальных способов взаимодействия с файлами – это список файлов в каталоге.
В этой статье мы будем использовать Node.js и встроенный ФС Модуль, а также Каталог – Дерево Модуль из NPM, чтобы переписать все файлы из каталога.
Мы прочитаем каталог, Файлы
, расположен в том же месте нашего app.js
Файл находится в:
09/10/2020 01:27 PM 332 app.js 09/10/2020 01:24 PMfiles
Каталог содержит:
files │ anotherDirectory │ └── fileInDirectory.txt └── textFile.txt └── anotherTextFile.txt
Каталог – дерево
Каталог - Дерево
это удобный модуль NPM, который заботится об этой задаче для нас и хорошо форматирует вывод. Сначала давайте установимся:
$ npm install directory-tree
Теперь давайте импомнем его в наш скрипт и поставьте его на наше каталог:
const dirTree = require("directory-tree"); const tree = dirTree('./files/'); console.log(tree);
дерево
Константа теперь содержит информацию, которую мы хотели бы получить доступ. Этот код приводит к себе:
{ path: './files/', name: 'files', children: [ { path: 'files\\anotherDirectory', name: 'anotherDirectory', children: [Array], size: 8, type: 'directory' }, { path: 'files\\anotherTextFile.txt', name: 'anotherTextFile.txt', size: 2218, extension: '.txt', type: 'file' }, { path: 'files\\textFile.txt', name: 'textFile.txt', size: 7, extension: '.txt', type: 'file' } ], size: 2233, type: 'directory' }
Мы также можем указать расширения, которые мы хотели бы фильтровать на основе, используя Dirtree ()
Функция:
const tree = dirTree('./files/', {extensions:/\.js$/}); console.log(tree);
Это вернет пустой результат, так как в файлов JS нет Файлы
каталог.
Fs.Readdir ()
Самый простой способ прочитать файлы из каталога без внешних модулей – с помощью ReadDir ()
функция. Это асинхронный и возвращает массив, содержащий имена файлов в указанном вами каталоге.
Давайте пойдем вперед и перечислите файлы из Файлы
Каталог:
const directory = './files/'; const fs = require('fs'); fs.readdir(directory, (err, files) => { files.forEach(file => { console.log(file); }); });
Здесь мы указали каталог
Константа, указывая на Файлы
Папка, после чего мы импортировали ФС
модуль.
Затем мы поставляли каталог
к ReadDir ()
функция и записано их имя через обратный вызов. Это приводит к:
anotherDirectory anotherTextFile.txt textFile.txt textFile.txt - Shortcut.lnk
Примечание: ReadDir ()
Функция также считывает каталоги, но без указания относительно того, является ли это каталог или файл. Файл без расширения выглядит так же, как каталог в этом случае.
Однако мы можем использовать fs.lstatsync ()
Функция, чтобы помочь нам с этим:
const directory = './files/'; const path = require('path'); const fs = require('fs'); fs.readdir(directory, (err, files) => { files.forEach(file => { if (fs.lstatSync(path.resolve(directory, file)).isDirectory()) { console.log('Directory: ' + file); } else { console.log('File: ' + file); } }); });
Использование ISDirectory ()
, мы проверили, если то, что мы столкнулись с данным путем, это каталог или файл. Сейчас приводит к:
Directory: anotherDirectory File: anotherTextFile.txt File: file File: textFile.txt
fs.readdirsync ()
ReadDirsync ()
Функция практически такая же, как ReadDir ()
Функция, но она читает синхронно, а не асинхронно.
Он работает так же, как предыдущий подход – он просто обрабатывает операцию синхронно:
const directory = './files/'; const path = require('path'); const fs = require('fs'); fs.readdirSync(directory).forEach(file => { if (fs.lstatSync(path.resolve(directory, file)).isDirectory()) { console.log('Directory: ' + file); } else { console.log('File: ' + file); } });
Здесь мы сделали то же самое, что мы сделали раньше. Проверка файлов и каталогов, изменение потока слегка на основе результатов. Этот код печатает:
Directory: anotherDirectory File: anotherTextFile.txt File: file File: textFile.txt
Заключение
В этой статье мы пропустили несколько способов перечисления файлов в каталоге в Node.js, мы начали с Каталог - Дерево
, пакет NPM, построенный для этой цели, после чего мы использовали встроенный ФС
Модуль и его ReadDir ()
и ReadDirsync ()
Функции для перечисления файлов.