我正在尝试读取(通过流式传输)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);
});
答案 0 :(得分:0)
正如布拉德所提到的,它很难提供帮助,因为这对你的读写器库来说更是一个问题。
我可以提供替代解决方案,但不需要lib。
我会像你一样使用GetObject,但是我也会为range参数指定一个值,然后以块的方式处理文件,然后在满意时停止读取块。
如果我读取的块没有/ n然后读取另一个块,继续前进直到我得到一个/ n,然后从我的缓冲数据的开头读取到/ n,基于此设置新的起始位置int / n的位置,如果您想要读取更多数据,则从该位置读取新块。
查看api中的range参数: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property