如何使用电子循环文件夹和子文件夹中的文件?

时间:2018-01-25 19:19:46

标签: javascript node.js npm electron

我有一个桌面应用程序,我要求我循环浏览一个文件夹及其所有子文件夹,以查找名称中包含特定字符的文件。这有可能使用电子吗?我无法弄清楚如何做到这一点

2 个答案:

答案 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]);
            }


        }
      }
    });
})