【问题标题】:How to storage a directory file names in an array of strings如何将目录文件名存储在字符串数组中
【发布时间】:2021-08-23 13:06:35
【问题描述】:

我正在尝试从我的 /assets/audio 文件夹中获取所有音频文件的名称,以动态创建声音按钮。现在我有一个数组,我在其中手动输入了所有文件的名称。这个想法是在我向项目中添加新文件时自动获取名称,而不是手动将它们添加到数组中。

我已经找了很长时间了,但我还没有找到适合我情况的解决方案。 我正在尝试开发一个简单的 Android 应用程序,没有服务器,没有后端,它是一个音板。但是我的问题的很多解决方案都说我需要使用后端来做到这一点。更具体地说,使用fs,如下所示:

const testFolder = './tests/';
const fs = require('fs');

fs.readdirSync(testFolder).forEach(file => {
  console.log(file);
});

但是我得到这个错误,我还没有找到解决方案:

[ng] Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat 'C:\DumpStack.log.tmp'

有没有一种简单的方法来读取目录文件并将名称存储在一个数组中?

抱歉,我还在学习中,有很多东西我不知道如何正确查找。

【问题讨论】:

    标签: javascript angular typescript cordova ionic-framework


    【解决方案1】:

    您可以使用try/catch 绕过锁定(或其他无法访问的)文件

    fs.readdirSync(testFolder).forEach(file => {
      try { 
        console.log(file);
      } catch (e) {
        console.log('cannot read file', e);
      }
    });
    

    【讨论】:

      【解决方案2】:

      抱歉回复延迟了,不过你可以用这个小功能来做这个

          function importAll(r) {
              return r.keys().map(r);
          }
          const testFolder = importAll(
              require.context("./tests/", false, /*/)
          );
      

      我在一个 react 项目中将它与 webpack 一起使用,所以如果没有 webpack 事先捆绑你的数据,我不知道它是如何工作的,但是从 require 返回的数据看起来不像一个数组(tbh 我不知道它是什么)。当您映射它时,它会返回一个数组,所以我认为它也应该适用于您的情况。

      【讨论】:

      • 您好,感谢您的回答。我已经在多个场合做过npm install,但它没有解决错误:/ 另外,我使用的是 Windows 10。
      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2015-12-06
      • 2012-04-14
      相关资源
      最近更新 更多