Как отобразить все файлы в каталоге с помощью Node.js?

Опубликовано: 1 Августа, 2021

Файлы, находящиеся в каталоге, можно отобразить с помощью двух подходов в Node.js, которые обсуждаются ниже:

Метод 1. Использование метода fs.readdirSync (). Метод fs.readdirSync() доступен в модуле файловой системы Node.js. Он используется для чтения содержимого каталога. Он возвращает массив путей к файлам, буферов или объектов fs.Dirent.

Возвращенный массив файлов может быть перебран с помощью цикла forEach (), и имена файлов могут быть отображены из него. Это позволяет отображать все имена файлов, присутствующие в каталоге.

Асинхронный вариант метода fs.readdir() также может использоваться вместо этой функции, которая возвращает обратный вызов с файлами вместо самих файлов.

Пример:




// Import the filesystem module
const fs = require("fs");
  
let directory_name = "example_dir";
  
// Function to get current filenames
// in directory
let filenames = fs.readdirSync(directory_name);
  
console.log(" Filenames in directory:");
filenames.forEach((file) => {
    console.log("File:", file);
});

Выход:

Имена файлов в каталоге:
Файл: file_a.txt
Файл: file_b.txt
Файл: file_c.txt

Метод 2: Использование метода fs.opendirSync (): Метод fs.opendirSync() доступен в модуле файловой системы Node.js. Его можно использовать для чтения содержимого каталога. Он возвращает fs.Dir , представляющий данный каталог.

Объект fs.Dir можно использовать для доступа к файлам в этом каталоге с помощью readSync() . Этот метод возвращает fs.Dirent , содержащий представление записи каталога. Этот объект имеет name которое можно использовать для получения имени файла, на который fs.Dirent этот объект fs.Dirent. Это имя может быть доступно и отображено для этого пользователя. Метод readSync() автоматически прочитает следующую запись в каталоге и вернет значение null, если записей больше нет. Это можно использовать для непрерывного перебора записей и получения всех имен файлов с помощью цикла while.

Асинхронный вариант метода fs.opendir() также может использоваться вместо этой функции, которая возвращает обратный вызов с fs.Dir вместо самого объекта.

Пример:




// Import the filesystem module
const fs = require( "fs" );
let directory_name = "example_dir" ;
// Open the directory
let openedDir = fs.opendirSync(directory_name);
// Print the pathname of the directory
console.log( " Path of the directory:" , openedDir.path);
// Get the files present in the directory
console.log( "Files Present in directory:" );
let filesLeft = true ;
while (filesLeft) {
// Read a file as fs.Dirent object
let fileDirent = openedDir.readSync();
// If readSync() does not return null
// print its filename
if (fileDirent != null )
console.log( "Name:" , fileDirent.name);
// If the readSync() returns null
// stop the loop
else filesLeft = false ;
}

Выход:

Путь к каталогу: example_dir
Файлы в каталоге:
Имя: file_a.txt
Имя: file_b.txt
Имя: file_c.tx