【发布时间】:2018-01-26 08:58:39
【问题描述】:
我正在制作一个桌面应用程序,它要求我遍历一个文件夹及其所有子文件夹,以查找名称中包含特定字符的文件。这可以使用电子吗?我不知道该怎么做
【问题讨论】:
标签: javascript node.js npm electron
我正在制作一个桌面应用程序,它要求我遍历一个文件夹及其所有子文件夹,以查找名称中包含特定字符的文件。这可以使用电子吗?我不知道该怎么做
【问题讨论】:
标签: javascript node.js npm electron
这是目前正在构建的电子应用程序中使用的内容
const iterateDir = () => {
const files = [],
dirs = [];
return function dirIt(directory) {
try {
let dirContent = fs.readdirSync(directory);
dirContent.forEach( path => {
const fullPath = join(directory,path);
if ( fs.statSync(fullPath).isFile() )
files.push(fullPath);
else
dirs.push(fullPath);
});
if ( dirs.length !== 0 )
dirIt(dirs.pop());
return files;
} catch(ex) {
console.log(ex);
return false;
}
};
};
【讨论】:
我能够通过使用 npm 包 glob 浏览文件夹和子文件夹。 在此演示中,仅将文件发送到控制台,但如果您要将变量“res”发送到控制台,您将获得一个包含所选文件夹中所有文件夹和文件的数组。
顺便说一句,通常 chrome 无法查看文件夹路径,这就是我使用函数“.path”的原因。它是由电子创建的,以服务于该目的。在 html 文件中,我使用
<input id="directoryVal" type="file"
webkitdirectory />
这样我就可以浏览文件夹了。
var getDirectories = function (src, callback) {
glob(src + '/**/*', callback);
};
listdir.addEventListener('click', function (event) {
var directoryVal = document.getElementById('directoryVal').files[0].path
getDirectories(directoryVal, function (err, res) {
if (err) {
console.log('Error', err);
} else {
for (i=0; i< res.length; i++){
if (fs.lstatSync(res[i]).isDirectory() == false){
console.log(res[i]);
}
}
}
});
})
【讨论】: