节点fs包有以下列出目录的方法:
fs.readdir(path,callback)异步读目录(3)。读取目录的内容。该回调获取两个参数(err,files),其中files是目录中除‘’以外的文件的名称数组。和“..”。
fs.readdirSync(path)同步读取目录(3)。返回不包括'.‘的文件名数组。和'..
但是,如何获取与文件规范匹配的文件列表,例如*.txt
发布于 2017-05-26 19:09:22
你可以用extension extractor函数过滤他们的文件数组。如果您不想编写自己的字符串操作逻辑或正则表达式,path
模块就提供了一个这样的函数。
const path = require('path');
const EXTENSION = '.txt';
const targetFiles = files.filter(file => {
return path.extname(file).toLowerCase() === EXTENSION;
});
根据@arboreal84的建议进行编辑,您可能希望考虑像myfile.TXT
这样的情况,这并不是很常见。我刚刚自己测试了一下,path.extname
不会为你做小写。
发布于 2017-05-26 19:03:03
基本上,您可以这样做:
const path = require('path')
const fs = require('fs')
const dirpath = path.join(__dirname, '/path')
fs.readdir(dirpath, function(err, files) {
const txtFiles = files.filter(el => path.extname(el) === '.txt')
// do something with your files, by the way they are just filenames...
})
发布于 2017-05-26 19:37:50
我使用了以下代码,它工作得很好:
var fs = require('fs');
var path = require('path');
var dirPath = path.resolve(__dirname); // path to your directory goes here
var filesList;
fs.readdir(dirPath, function(err, files){
filesList = files.filter(function(e){
return path.extname(e).toLowerCase() === '.txt'
});
console.log(filesList);
});
https://stackoverflow.com/questions/44199883
复制相似问题