Javascript 使用JS和Node对文件进行读写
我试着写一个函数来读取一个文件,当它找到一个特定的行时,它会删除它下面的所有内容,然后附加另一组行。我已成功读取文件并找到所需的字符串:Javascript 使用JS和Node对文件进行读写,javascript,node.js,Javascript,Node.js,我试着写一个函数来读取一个文件,当它找到一个特定的行时,它会删除它下面的所有内容,然后附加另一组行。我已成功读取文件并找到所需的字符串: function read() { lineReader.on('line', function (line) { console.log('Line from file: ' + line) if(line.trim() === 'Examples:'){ console.log('Found
function read() {
lineReader.on('line', function (line) {
console.log('Line from file: ' + line)
if(line.trim() === 'Examples:'){
console.log('Found what I needed, delete everything below this line');
}
});
}
我看不到的是如何删除这行下面的所有内容,然后添加我需要的文本。我不熟悉JS和Node.JS。您可以通过同时打开文件写入流来实现这一点 在lineReader事件处理程序中,将示例前面的所有行放入单独的文件流中。当示例出现时,只需将所需的行集附加到第二个文件流中并关闭lineReader 因此,添加如下内容:
// before the code
var writer = fs.createWriteStream('new.txt');
// load custom lines from customLines.txt
var customLines = fs.readFileSync('customLines.txt');
// in the on('line') callback:
writer.write(line + "\n");
// if 'Examples:' was found:
writer.write(customLines);
writer.end();
lineReader.close();
@jfriend00不必是,因此是同步变体。@Phix-如果它是启动以外的任何位置的服务器代码,那么它应该是异步的,因为阻塞、同步I/O会破坏服务器的可伸缩性。它不必是异步的。fs.readFileSync将阻止执行,直到文件内容被转换成字符串。为StackOverflow示例编写的时间更短,而且通常情况下工作得足够好。在某些情况下,您应该更喜欢异步版本,这包括更大的文件和生产/服务器端/可扩展的使用。