Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JS和Node对文件进行读写_Javascript_Node.js - Fatal编程技术网

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示例编写的时间更短,而且通常情况下工作得足够好。在某些情况下,您应该更喜欢异步版本,这包括更大的文件和生产/服务器端/可扩展的使用。