Node.js fs.readdirSync() 方法
fs.readdirSync() 方法用于同步读取给定目录的内容。该方法返回一个包含目录中所有文件名或对象的数组。 options 参数可用于更改从方法返回文件的格式。
句法:
fs.readdirSync( path, options )
参数:此方法接受上面提到的两个参数,如下所述:
- path:它保存必须从中读取内容的目录的路径。它可以是字符串、缓冲区或 URL。
- options:它是一个对象,可用于指定将影响方法的可选参数。它有两个可选参数:
- encoding:它是一个字符串值,它指定将哪种编码用于给回调参数的文件名。默认值为“utf8”。
- withFileTypes:它是一个布尔值,指定文件是否将作为 fs.Dirent 对象返回。默认值为“假”。
返回:它返回包含目录中文件的 String、Buffer 或 fs.Dirent 对象的数组。
下面的示例说明了 Node.js 中的fs.readdirSync() 方法:
示例 1:本示例使用 fs.readdirSync() 方法返回目录中的文件名或文件对象。
// Node.js program to demonstrate the
// fs.readdirSync() method
// Import the filesystem module
const fs = require('fs');
// Function to get current filenames
// in directory
filenames = fs.readdirSync(__dirname);
console.log("\nCurrent directory filenames:");
filenames.forEach(file => {
console.log(file);
});
// Function to get current filenames
// in directory with "withFileTypes"
// set to "true"
fileObjs = fs.readdirSync(__dirname, { withFileTypes: true });
console.log("\nCurrent directory files:");
fileObjs.forEach(file => {
console.log(file);
});
输出:
Current directory filenames:
CONTRUBUTIONS.txt
index.html
index.js
package.json
README.md
Current directory files:
Dirent { name: 'CONTRUBUTIONS.txt', [Symbol(type)]: 1 }
Dirent { name: 'index.html', [Symbol(type)]: 1 }
Dirent { name: 'index.js', [Symbol(type)]: 1 }
Dirent { name: 'package.json', [Symbol(type)]: 1 }
Dirent { name: 'README.md', [Symbol(type)]: 1 }
示例 2:此示例使用 fs.readdirSync() 方法仅返回带有“.md”扩展名的文件名。
// Node.js program to demonstrate the
// fs.readdirSync() method
// Import the filesystem module
const fs = require('fs');
const path = require('path');
// Function to get current filenames
// in directory with specific extension
files = fs.readdirSync(__dirname);
console.log("\Filenames with the .md extension:");
files.forEach(file => {
if (path.extname(file) == ".md")
console.log(file);
})
输出:
Filenames with the .md extension:
README.md
参考: https://nodejs.org/api/fs.html#fs_fs_readdirsync_path_options