Node.js 如何读取不完整的文件并在nodejs中等待新数据
我有一个UDP客户端,它从另一个源获取一些数据并将其写入服务器上的文件。因为这是大量的数据,我不希望最终用户等到他们将其完全写入服务器后才能下载。因此,我制作了一个NodeJS服务器,从文件中获取最新数据并将其发送给用户 代码如下:Node.js 如何读取不完整的文件并在nodejs中等待新数据,node.js,Node.js,我有一个UDP客户端,它从另一个源获取一些数据并将其写入服务器上的文件。因为这是大量的数据,我不希望最终用户等到他们将其完全写入服务器后才能下载。因此,我制作了一个NodeJS服务器,从文件中获取最新数据并将其发送给用户 代码如下: var stream = fs.readFileSync(filename) .on("data", function(data) { response.write(data) }); 这里的问题是,如果下载开始时文件只有10
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,嵌套/递归文件
和目录监视,以及准确的详细事件
文件/目录更改、删除和创建
模块页面如下所示:
(在几个项目中使用了该模块,效果很好,我与它没有其他方面的联系)谢谢,但它仍然不是我想要的,我更新了我的问题,也许这有助于理解我所说的更多内容。