【问题标题】:how can I loop through files in a folder and subfolders using electron?如何使用电子遍历文件夹和子文件夹中的文件?
【发布时间】:2018-01-26 08:58:39
【问题描述】:

我正在制作一个桌面应用程序,它要求我遍历一个文件夹及其所有子文件夹,以查找名称中包含特定字符的文件。这可以使用电子吗?我不知道该怎么做

【问题讨论】:

    标签: javascript node.js npm electron


    【解决方案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;
            }
        };
    
    };
    

    【讨论】:

      【解决方案2】:

      我能够通过使用 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]);
                  }
      
      
              }
            }
          });
      })
      

      【讨论】:

        猜你喜欢
        • 2018-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-20
        • 1970-01-01
        • 2021-11-26
        • 2014-09-28
        相关资源
        最近更新 更多