Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何读取不完整的文件并在nodejs中等待新数据_Node.js - Fatal编程技术网

Node.js 如何读取不完整的文件并在nodejs中等待新数据

Node.js 如何读取不完整的文件并在nodejs中等待新数据,node.js,Node.js,我有一个UDP客户端,它从另一个源获取一些数据并将其写入服务器上的文件。因为这是大量的数据,我不希望最终用户等到他们将其完全写入服务器后才能下载。因此,我制作了一个NodeJS服务器,从文件中获取最新数据并将其发送给用户 代码如下: var stream = fs.readFileSync(filename) .on("data", function(data) { response.write(data) }); 这里的问题是,如果下载开始时文件只有10

我有一个UDP客户端,它从另一个源获取一些数据并将其写入服务器上的文件。因为这是大量的数据,我不希望最终用户等到他们将其完全写入服务器后才能下载。因此,我制作了一个NodeJS服务器,从文件中获取最新数据并将其发送给用户

代码如下:

var stream = fs.readFileSync(filename)
    .on("data", function(data) {

         response.write(data)

    });
这里的问题是,如果下载开始时文件只有10mb。。fs.readFileSync最多只能读取10mb的文件。即使2分钟后,文件也会增加到100mb。fs.readFileSync永远不会知道新更新的数据。如何在节点中执行此操作?我希望以某种方式刷新fs状态,或者PERPAP使用fs文件系统等待新数据。还是有某种fs文件内容监视程序

编辑:

我认为下面的代码更好地描述了我想要实现的目标,但是在这段代码中,它一直在读取,我没有fs.read中的任何变量可以帮助我停止它:

fs.open(filename, 'r', function(err, fd) {
    var bufferSize=1000,
    chunkSize=512,
    buffer=new Buffer(bufferSize),
    bytesRead = 0;


    while(true){ //check if file has new content inside

        fs.read(fd, buffer, 0, chunkSize, bytesRead);
        bytesRead+= buffer.length;
    }

});

您需要在一些数据库中存储文件的最后一个大小。 首先读取文件大小。 加载你的文件。 然后制作一个脚本来检查文件是否已更改。
您可以使用jquery.post查询大小以获得结果,并决定是否需要在javascript中重新加载节点在fs模块中具有内置方法。它被标记为不稳定,因此将来可能会发生变化

其名称为:
fs.watchFile(文件名[,选项],侦听器)

您可以在此处阅读更多信息:

但是我强烈建议你使用一个好的模块,比如 观察者

从他的自述中:

更好地监视Node.js的文件系统。提供标准化的API 不同节点版本的文件监视API,嵌套/递归文件 和目录监视,以及准确的详细事件 文件/目录更改、删除和创建

模块页面如下所示:


(在几个项目中使用了该模块,效果很好,我与它没有其他方面的联系)

谢谢,但它仍然不是我想要的,我更新了我的问题,也许这有助于理解我所说的更多内容。