node.js - Node 的 readFile() 是否使用分配了所有文件大小的单个缓冲区?

标签 node.js file-io stream filesystems buffer

我对 Node 和文件系统流问题还很陌生。我现在想知道 readFile 函数是否可以读取文件统计信息,获取大小并创建一个分配了所有文件大小的缓冲区。或者换句话说:我知道它会加载整个文件,好吧。但是它是通过在内部将文件拆分为更多缓冲区来实现这一点还是仅使用一个大缓冲区?根据所使用的方法,它具有不同的内存使用/泄漏影响。

最佳答案

在第 9.3 章中找到答案:

http://book.mixu.net/node/ch9.html

正如预期的那样,readFile 使用了 1 个完整的缓冲区。从上面的链接来看,这是readFile的执行:

//全缓冲访问 [100 Mb 文件] -> 1. [分配 100 Mb 缓冲区] -> 2. [读取并返回100 Mb缓冲区]

因此,如果您使用 readFile(),您的应用程序将立即需要所有文件大小的内存。

要将内存分成 block ,请使用 read() 或 createReadStream()

关于node.js - Node 的 readFile() 是否使用分配了所有文件大小的单个缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26136680/

相关文章:

javascript - Node js递归文件夹包含

java - 使用 FileWriter 写入的文件要么是 32 KB、24 KB、16 KB...大要么是空

c# - stream 不支持并发 IO 读写操作

MATLAB:如何从文件中加载没有分隔符的数组

scala - 递归流抛出 StackOverflowError

objective-c - 防止 bash 将 stdin 转发到 stderr

node.js - NW.js/Node.js 使用 node-mssql 时抛出 "SSL routines:ssl_choose_client_version:unsupported protocol"错误/乏味

javascript - 使用 gridfs 和 mongoose 在 mongodb 中存储文件

javascript - AWS 认知 : Generate token and after refresh it with amazon-cognito-identity-js SDK

c# - .NET File.Copy 等待完成