我有一个桌面应用程序,我要求我循环浏览一个文件夹及其所有子文件夹,以查找名称中包含特定字符的文件。这有可能使用电子吗?我无法弄清楚如何做到这一点
答案 0 :(得分:1)
这是在电子应用程序构建中使用的当前情况
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;
}
};
};
答案 1 :(得分:0)
我可以使用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]);
}
}
}
});
})