编写此代码的方法有很多,但我无法理解为什么我的版本无效。
程序应该从命令行获取2个参数。第一个是包含文件的文件夹的路径,第二个是文件扩展名。输出应仅打印与第二个参数具有相同扩展名的文件。 当我尝试使用2个参数执行此代码时,我得到一个空输出。
var fs=require('fs');
var path=require('path');
var filepath=process.argv[2];
var ext="."+process.argv[3];
fs.readdir(filepath,function(err,list) {
if (err) throw err;
for (var i=0;i<list.length-1;i++) {
if (("."+path.extname(list[i]))==ext) {
console.log(list[i]);
}
}
});
答案 0 :(得分:0)
请删除&#39; utf-8&#39;,您只需要输入类型(并阅读文档http://nodejs.org/api/fs.html#fs_fs_readdir_path_callback):
fs.readdir(filepath,function(err,list){
答案 1 :(得分:0)
path.extname()
返回带有点的扩展名,如下所示:link;不需要"."+path.extname
。
考虑循环初始化的方式时,for循环中的list.length-1
没有多大意义。 list.length
是正确的选择。
有关如何解决此问题的参考,请参见下面的代码
var fs = require("fs")
var path = require("path")
var pathToUse = process.argv[2]
var ext = "."+process.argv[3]
fs.readdir(pathToUse, function(err, files){
if(err){
throw err;
}
else{
var filteredFiles = files.filter(function(file){
if(path.extname(file) === ext){
return true;
}
else{
return false;
}
});
for(var x = 0; x < filteredFiles.length; x++){
console.log(filteredFiles[x];
}
}
});