如何在文本文件中从node.js中的特定行位置删除行

如何在文本文件中从node.js中的特定行位置删除行,node.js,fs,Node.js,Fs,我不想在第7行之后删除所有的行。如何使用node.js和fs来实现这一点 const fs = require('fs'); 文本文件(.txt) 您可以使用流,在达到所需行数后停止读取文件,并仅写入转换后的内容,即直到第n行的内容 const fs = require('fs'); const { Transform } = require('stream'); const clipLines = maxLines => { // Get new line charact

我不想在第7行之后删除所有的行。如何使用node.js和fs来实现这一点

const fs = require('fs');
文本文件(.txt)

您可以使用流,在达到所需行数后停止读取文件,并仅写入转换后的内容,即直到第n行的内容

const fs = require('fs');
const { Transform } = require('stream');


const clipLines = maxLines => {

    // Get new line character code [10, 13]
    const NEWLINES = ['\n', '\r\n'].map(item => item.charCodeAt(0));
    let sourceStream;
    let linesRemaining = maxLines;

    const transform = new Transform({

        transform(chunk, encoding, callback) {

            const chunks = [];

            // Loop through the buffer
            for(const char of chunk) {

                chunks.push(char); // Move to the end if you don't want the ending newline

                if(NEWLINES.includes(char) && --linesRemaining == 0) {  
                    sourceStream.close(); // Close stream, we don't want to process any more data.
                    break;
                }
            }

            callback(null, Buffer.from(chunks));
        }
    });

    transform.on('pipe', source => {
        sourceStream = source

        if(maxLines <= 0)
            source.close();
    });

    return transform;

}

fs.createReadStream('test.txt')
    .pipe(clipLines(7))
    .pipe(fs.createWriteStream('out.txt'))
const fs=require('fs');
const{Transform}=require('stream');
常数clipLines=maxLines=>{
//获取新行字符代码[10,13]
常量换行符=['\n','\r\n'].map(item=>item.charCodeAt(0));
让源流;
设linesRemaining=maxLines;
常量变换=新变换({
转换(块、编码、回调){
常量块=[];
//循环通过缓冲区
for(块的常量字符){
chunks.push(char);//如果不需要结束换行符,请移到末尾
if(NEWLINES.includes(char)&&--linesRemaining==0){
sourceStream.close();//关闭流,我们不想再处理任何数据。
打破
}
}
回调(null,Buffer.from(chunks));
}
});
transform.on('pipe',source=>{
sourceStream=源
如果(最大线)
const fs = require('fs');
const { Transform } = require('stream');


const clipLines = maxLines => {

    // Get new line character code [10, 13]
    const NEWLINES = ['\n', '\r\n'].map(item => item.charCodeAt(0));
    let sourceStream;
    let linesRemaining = maxLines;

    const transform = new Transform({

        transform(chunk, encoding, callback) {

            const chunks = [];

            // Loop through the buffer
            for(const char of chunk) {

                chunks.push(char); // Move to the end if you don't want the ending newline

                if(NEWLINES.includes(char) && --linesRemaining == 0) {  
                    sourceStream.close(); // Close stream, we don't want to process any more data.
                    break;
                }
            }

            callback(null, Buffer.from(chunks));
        }
    });

    transform.on('pipe', source => {
        sourceStream = source

        if(maxLines <= 0)
            source.close();
    });

    return transform;

}

fs.createReadStream('test.txt')
    .pipe(clipLines(7))
    .pipe(fs.createWriteStream('out.txt'))