📌  相关文章
📜  如何从 nodejs 中的文件中获取特定行 - Javascript (1)

📅  最后修改于: 2023-12-03 15:08:14.389000             🧑  作者: Mango

如何从 Node.js 中的文件中获取特定行 - Javascript

在 Node.js 中,我们可以使用 fs 模块来读取文件。如果我们想要获取文件中的特定行,以下是一些方法。

方法一:使用 readline 模块

可以使用 Node.js 的 readline 模块来逐行读取文件并找到特定行。

const readline = require('readline');
const fs = require('fs');

function getLineByNumber(filename, lineNumber) {
  const fileStream = fs.createReadStream(filename);
  const rl = readline.createInterface({
    input: fileStream,
    crlfDelay: Infinity
  });
  let currentLine = 0;
  return new Promise((resolve, reject) => {
    rl.on('line', (line) => {
      currentLine++;
      if (currentLine === lineNumber) {
        rl.close();
        resolve(line);
      }
    });
    rl.on('close', () => {
      reject(`Unable to find line ${lineNumber}`);
    });
  });
}

// Example usage
getLineByNumber('file.txt', 3)
  .then((line) => {
    console.log(line);
  })
  .catch((err) => {
    console.error(err);
  });
方法二:使用 split 方法

可以使用 split 方法将文件内容按行拆分为数组,然后获取特定的行。

const fs = require('fs');

function getLineByNumber(filename, lineNumber) {
  return new Promise((resolve, reject) => {
    fs.readFile(filename, 'utf-8', (err, data) => {
      if (err) {
        reject(err);
      }
      const lines = data.split('\n');
      if (lineNumber > lines.length) {
        reject(`Unable to find line ${lineNumber}`);
      }
      resolve(lines[lineNumber - 1]);
    });
  });
}

// Example usage
getLineByNumber('file.txt', 3)
  .then((line) => {
    console.log(line);
  })
  .catch((err) => {
    console.error(err);
  });

以上是两种在 Node.js 中获取文件特定行的方法。当然,还有其他方法可以实现同样的功能,但这些方法是最简单的,同时也是最常用的。