如何在文本文件中从node.js中的特定行位置删除行
我不想在第7行之后删除所有的行。如何使用node.js和fs来实现这一点如何在文本文件中从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
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'))