अलग सोच
यदि आप निर्देशिका संरचना के साथ कोई वस्तु चाहते हैं, तो मैं आपको निर्देशिका-ट्री की जांच करने के लिए अत्यधिक प्रतिसाद देता हूं ।
कहते हैं कि आपके पास यह संरचना है:
photos
│ june
│ └── windsurf.jpg
└── january
├── ski.png
└── snowboard.jpg
const dirTree = require("directory-tree");
const tree = dirTree("/path/to/photos");
वापस होगा:
{
path: "photos",
name: "photos",
size: 600,
type: "directory",
children: [
{
path: "photos/june",
name: "june",
size: 400,
type: "directory",
children: [
{
path: "photos/june/windsurf.jpg",
name: "windsurf.jpg",
size: 400,
type: "file",
extension: ".jpg"
}
]
},
{
path: "photos/january",
name: "january",
size: 200,
type: "directory",
children: [
{
path: "photos/january/ski.png",
name: "ski.png",
size: 100,
type: "file",
extension: ".png"
},
{
path: "photos/january/snowboard.jpg",
name: "snowboard.jpg",
size: 100,
type: "file",
extension: ".jpg"
}
]
}
]
}
कस्टम वस्तु
अन्यथा यदि आप अपनी कस्टम सेटिंग्स के साथ डायरेक्टरी ट्री ऑब्जेक्ट बनाना चाहते हैं तो निम्नलिखित स्निपेट पर एक नज़र डालें। इस कोडैंडबॉक्स पर एक लाइव उदाहरण दिखाई देता है ।
// my-script.js
const fs = require("fs");
const path = require("path");
const isDirectory = filePath => fs.statSync(filePath).isDirectory();
const isFile = filePath => fs.statSync(filePath).isFile();
const getDirectoryDetails = filePath => {
const dirs = fs.readdirSync(filePath);
return {
dirs: dirs.filter(name => isDirectory(path.join(filePath, name))),
files: dirs.filter(name => isFile(path.join(filePath, name)))
};
};
const getFilesRecursively = (parentPath, currentFolder) => {
const currentFolderPath = path.join(parentPath, currentFolder);
let currentDirectoryDetails = getDirectoryDetails(currentFolderPath);
const final = {
current_dir: currentFolder,
dirs: currentDirectoryDetails.dirs.map(dir =>
getFilesRecursively(currentFolderPath, dir)
),
files: currentDirectoryDetails.files
};
return final;
};
const getAllFiles = relativePath => {
const fullPath = path.join(__dirname, relativePath);
const parentDirectoryPath = path.dirname(fullPath);
const leafDirectory = path.basename(fullPath);
const allFiles = getFilesRecursively(parentDirectoryPath, leafDirectory);
return allFiles;
};
module.exports = { getAllFiles };
तो आप बस कर सकते हैं:
// another-file.js
const { getAllFiles } = require("path/to/my-script");
const allFiles = getAllFiles("/path/to/my-directory");
fs.readdir
काम करता है, लेकिन फ़ाइल नाम ग्लोब पैटर्न का उपयोग नहीं कर सकताls /tmp/*core*
। की जाँच करें github.com/isaacs/node-glob । ग्लोब भी उप-निर्देशिकाओं में खोज कर सकते हैं।