Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何在没有阻塞循环的情况下读取节点js中的大型二进制文件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试学习一些事件驱动编程的基础知识.因此,对于练习,我正在尝试编写一个程序,该程序读取大型二进制文件并使用它执行某些操作但不进行阻塞调用.我想出了以下@L_262_3@:

var fs = require('fs');
var BUFFER_SIZE = 1024;
var path_of_file = "somefile"

fs.open(path_of_file,'r',(error_opening_file,fd) =>
{
    if (error_opening_filE)
    {
        console.log(error_opening_file.messagE);
        return;
    }

    var buffer = new Buffer(BUFFER_SIZE);
    fs.read(fd,buffer,BUFFER_SIZE,(error_reading_file,bytesRead,buffer) =>
    {
        if (error_reading_filE)
        {
            console.log(error_reading_file.messagE);
            return;
        }

        // do something e.g. print or write to another file
    })
})

我知道我需要设置一个while循环以便读取完整的文件,但在上面的代码中我只读取文件的前1024个字节,并且不能制定如何在不使用阻塞循环的情况下继续读取文件.我们怎么能这样做?

解决方法

请改用 fs.createReadStream.这将一遍又一遍地调用您的回调,直到它完成读取文件,因此您不必阻止.

var fs = require('fs');

var readStream = fs.createReadStream('./test.exe');
readStream.on('data',function (chunk) {
  console.log(chunk.length);
})

大佬总结

以上是大佬教程为你收集整理的node.js – 如何在没有阻塞循环的情况下读取节点js中的大型二进制文件?全部内容,希望文章能够帮你解决node.js – 如何在没有阻塞循环的情况下读取节点js中的大型二进制文件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。