我的 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
}
It's 不可能 https://github.com/nodejs/help/issues/2044删除一行而不以某种方式重新读取和写入整个文件 - 您可以replace行如这个答案 https://stackoverflow.com/a/30873428/5774952,或者使用流式传输来避免需要将整个文件读入内存,如下所示这个答案 https://stackoverflow.com/a/17365494/5774952。如果你想截断文件,你可以使用fs.截断 https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fs_ftruncate_fd_len_callback,但这不会帮助您删除first线。您至少可以通过使用来简化函数的最后一部分.join('\n')
而不是循环。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)