首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Node.js在内存中缓冲整个文件

使用Node.js在内存中缓冲整个文件
EN

Stack Overflow用户
提问于 2013-10-31 20:00:30
回答 3查看 100.8K关注 0票数 44

我有一个相对较小的文件(大约几百千字节),我希望在内存中直接访问代码的整个执行过程。

我不知道Node.js的确切内部结构,所以我问一个fs open是否足够,或者我必须读取所有文件并复制到Buffer

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-31 20:33:37

基本上,您需要使用fs模块中的readFilereadFileSync函数。它们返回给定文件的完整内容,但它们的行为不同(异步与同步)。

如果阻塞Node.js (例如,在应用程序启动时)不是问题,那么您可以使用同步版本,它非常简单:

var fs = require('fs');

var data = fs.readFileSync('/etc/passwd');

如果你需要异步,代码是这样的:

var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data ) {
  // ...
});

请注意,在任何一种情况下,您都可以提供一个options对象作为第二个参数,例如指定要使用的编码。如果省略编码,则返回原始缓冲区:

var fs = require('fs');

fs.readFile('/etc/passwd', { encoding: 'utf8' }, function (err, data ) {
  // ...
});

有效的编码包括utf8asciiutf16leucs2base64hex。还有一种binary编码,但它已被弃用,不应再使用。您可以在相应的documentation中找到有关如何处理编码和缓冲区的更多详细信息。

票数 80
EN

Stack Overflow用户

发布于 2013-10-31 20:30:57

像这样简单

var buffer = fs.readFileSync(filename);
票数 20
EN

Stack Overflow用户

发布于 2015-04-26 12:11:50

使用Node 0.12,现在可以同步执行此操作:

  var fs = require('fs');
  var path = require('path');

  // Buffer mydata
  var BUFFER = bufferFile('../public/mydata');

  function bufferFile(relPath) {
    return fs.readFileSync(path.join(__dirname, relPath)); // zzzz....
  }

fs是文件系统。readFileSync()返回一个缓冲区,如果需要,也可以返回字符串。

fs正确地假设相对路径是一个安全问题。path是一种变通方法。

要加载为字符串,请指定编码:

return readFileSync(path,{ encoding: 'utf8' });
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19705972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档