【问题标题】:NodeJS - How to remove the first line of a text file without read all lines?NodeJS - 如何在不读取所有行的情况下删除文本文件的第一行?
【发布时间】:2021-01-20 04:22:18
【问题描述】:

我在 S3 存储桶中有以下文件:

field1;field2;field3
VAL11,VAL12;VAL13
VAL21,VAL22;VAL23
VAL31,VAL32;VAL33

最终目标是只删除文件field1;field2;field3 的第一行。这是期望的结果:

VAL11,VAL12;VAL13
VAL21,VAL22;VAL23
VAL31,VAL32;VAL33

目前,我有以下功能可以读取文件中的所有内容。并使用\n 分解,删除第一行,然后使用\n 再次连接所有行。

那么有没有办法在不分解和重新组装的情况下删除第一行?

async function createRef (version,FIRMWARE_BUCKET_NAME) {
    const refFile = version + '/ref.ref'
    const ref = await getObject(FIRMWARE_BUCKET_NAME, refFile)
    const refString = ref.toString('utf8')
    let arrRef = refString.split('\n')
    arrRef.shift()
    
    let refConcatenated=''
    for (let i = 0; i < arrRef.length; i++) {
        if (arrRef[i] !== '' ) {
            let line = arrRef[i]
            refConcatenated = refConcatenated + line + '\n'
        }
    }
    return refConcatenated
}

【问题讨论】:

    标签: javascript node.js amazon-web-services amazon-s3 readfile


    【解决方案1】:

    not possible 删除一行而不以某种方式重新读取和写入整个文件 - 您可以像this answer 中那样替换行,或者使用流式传输来避免需要读取整个文件到内存中,如this answer。如果您想截断文件,您可以使用fs.truncate,但这不会帮助您删除 first 行。您至少可以通过使用.join('\n') 而不是循环来简化函数的最后一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2019-04-05
      • 2014-12-23
      • 1970-01-01
      • 2013-12-20
      • 2013-07-12
      相关资源
      最近更新 更多