当前位置: 首页 > 面试题库 >

读取目录中的所有文件,将它们存储在对象中,然后发送对象

刘和昶
2023-03-14
问题内容

我不知道这是否可能,但是可以。使用回调使工作变得更加困难。

我有一个包含html文件的目录,我想使用node.js和socket.io将它们以对象块的形式发送回客户端

我所有的文件都在/ tmpl中

因此,套接字需要读取/ tmpl中的所有文件。

对于每个文件,必须将数据存储在对象中,文件名作为键,内容作为值。

  var data;
  // this is wrong because it has to loop trough all files.
  fs.readFile(__dirname + '/tmpl/filename.html', 'utf8', function(err, html){
      if(err) throw err;
      //filename must be without .html at the end
      data['filename'] = html;
  });
  socket.emit('init', {data: data});

最后的回调也是错误的。目录中的所有文件完成后,必须调用它。

但是我不知道如何创建代码,有人知道这是否是possibel吗?


问题答案:

因此,分为三个部分。读取,存储和发送。

这是阅读部分:

var fs = require('fs');

function readFiles(dirname, onFileContent, onError) {
  fs.readdir(dirname, function(err, filenames) {
    if (err) {
      onError(err);
      return;
    }
    filenames.forEach(function(filename) {
      fs.readFile(dirname + filename, 'utf-8', function(err, content) {
        if (err) {
          onError(err);
          return;
        }
        onFileContent(filename, content);
      });
    });
  });
}

这是存储部分:

var data = {};
readFiles('dirname/', function(filename, content) {
  data[filename] = content;
}, function(err) {
  throw err;
});

发送部分取决于您。您可能想一一发送或阅读完成后发送给他们。

如果要在阅读完成后发送文件,则应使用功能的同步版本fs或使用Promise。异步回调不是一个好的样式。

另外,您还问过剥离扩展程序的问题。您应该一个一个地处理问题。没有人会为您编写完整的解决方案。



 类似资料:
  • 我在公共类singlyLinkedList中有私有类节点,我想从另一个公共类移动列表(作为临时),所以我如何创建临时节点或(方法)来移动列表。我不能将类节点更改为public,而应该保持为private。编程的思路是:在TextAnalyzer类中读取文件中的数据,然后将其插入到SinglyLinkedList中,并计算单词的出现频率。类singlyLinkedList 类TextAnalyzer

  • 本文向大家介绍Java将对象保存到文件中/从文件中读取对象的方法,包括了Java将对象保存到文件中/从文件中读取对象的方法的使用技巧和注意事项,需要的朋友参考一下 1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: 参数obj一定要实现Serializable接口,否则会抛出java.io.NotSerializableExcept

  • 问题内容: 如何显示指定目录中的图像?就像我要显示目录中的所有png图像一样,我的目录是media / images / iconized。 我试图环顾四周,但似乎它们都不符合我的实际需求。 但是,这是我的尝试。 希望这里有人可以帮忙。我对任何想法,建议和建议持开放态度,谢谢。 问题答案: 您也可以使用以下方法:

  • 我正在寻找一种方法来传输任何文件类型的原始文件数据和任何可能的内容(我的意思是文件和文件内容都是用户生成的),在主干前端使用xhr/ajax调用,在Django后端使用这两种方法。 编辑:也许这个问题还不清楚... 如果在IDE中打开一个文件(如Sublime),则可以查看和编辑组成该文件的实际代码。我试图将原始内容放入JSON中,这样我就可以发送到浏览器,修改后再发送回去。 我发布这个问题是因为

  • 所以我不熟悉使用BufferedReader读取文件,也不熟悉Java中的ArrayList。我想知道为什么我的代码没有在arrayList中的每个DVD对象中存储正确的数据。我最初认为它的工作方式是,它从文本文件的顶部开始,读取行,然后将该信息存储在变量中。读取完一个双精度值后,它会根据以前找到的信息创建一个DVD对象。然后该文件将继续读取并存储arrayList中的剩余数据。但是,我在arra

  • 问题内容: 问题是,当我将序列化对象存储在.txt文件中时,它的格式不是可读的,并且包含一些随机的符号和字母。首先,我想知道其背后的原因是什么,然后如何解决此问题。 好了,这是我的代码:我要序列化的对象 序列化 } 反序列化 输出: 问题答案: 存储在文件中的序列化对象不可读 除了通过反序列化之外,它们并不可读。 问题是,当我将序列化对象存储在.txt文件中时,它的格式不是可读的,并且包含一些随机