Есть ли способ увидеть файлы внутри каталогов, прочитав родительский каталог с помощью fs?

#node.js #path #fs

#node.js #путь #fs

Вопрос:

Итак, используя fs, я хотел бы прочитать ВСЕ внутри определенного каталога (назовем его родительским), включая другие каталоги, файлы внутри других каталогов и файлы внутри родительского. Например: родительский путь:

 /Parent/
 

Все внутри родительского каталога

 /Parent/index.js
/Parent/utils/utils.js
/Parent/Structures/thing.js
 

Как я все это получу? Я пробовал fs.readdir , fs.readdirSync но он читал только файлы, а не каталоги.

Ответ №1:

Ну, если у вас есть доступ к Bash в вашей среде, вы можете выполнить find с помощью exec() .

Пример:

 const { exec } = require("child_process");

exec("find /Parent/", (error, stdout, stderr) => {
    if (error) {
        console.log(`error: ${error.message}`);
        return;
    }
    if (stderr) {
        console.log(`stderr: ${stderr}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
});
 

Обновление после комментариев:

Использование рекурсивной функции для рекурсивного получения всех файлов в каталоге:

 const fs = require("fs")
const path = require("path")

const getAllFiles = function(dirPath, arrayOfFiles) {
  files = fs.readdirSync(dirPath)

  arrayOfFiles = arrayOfFiles || []

  files.forEach(function(file) {
    if (fs.statSync(dirPath   "/"   file).isDirectory()) {
      arrayOfFiles = getAllFiles(dirPath   "/"   file, arrayOfFiles)
    } else {
      arrayOfFiles.push(path.join(__dirname, dirPath, "/", file))
    }
  })

  return arrayOfFiles
}
 

ссылка: https://coderrocketfuel.com/article/recursively-list-all-the-files-in-a-directory-using-node-js

Комментарии:

1. Да, но я бы хотел использовать fs.

2. Как насчет использования рекурсивной функции для этого? В этой статье упоминается метод: coderrocketfuel.com/article /…

3. @user14428154 обновил ответ.