NodeJS - 使用Hex Charcaters(NUL)从S3流式传输大型ASCII文件

时间:2016-10-13 20:16:25

标签: node.js amazon-s3 aws-lambda

我正在尝试读取(通过流式传输)Lambda函数中的大文件。我的目标是阅读前几行并查找一些信息。 S3中的输入文件似乎有十六进制字符(NUL),以下代码在遇到NUL字符并进入下一行时停止读取该行。我想知道在查找行中的信息之前,如何阅读整行并替换/删除NUL字符。以下代码无法按预期工作:

                var readline = require('line-reader');
                var readStream = s3.getObject({Bucket: S3Bucket, Key: fileName}).createReadStream();
                readline.eachLine(readStream, {separator: '\n', encoding: 'utf8'}, function(line) {
                    console.log('Line ',line);
                });

1 个答案:

答案 0 :(得分:0)

正如布拉德所提到的,它很难提供帮助,因为这对你的读写器库来说更是一个问题。

我可以提供替代解决方案,但不需要lib。

我会像你一样使用GetObject,但是我也会为range参数指定一个值,然后以块的方式处理文件,然后在满意时停止读取块。

如果我读取的块没有/ n然后读取另一个块,继续前进直到我得到一个/ n,然后从我的缓冲数据的开头读取到/ n,基于此设置新的起始位置int / n的位置,如果您想要读取更多数据,则从该位置读取新块。

查看api中的range参数: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property