我需要用JavaScript逐行读取一个文本文件。我可能想对每一行做些什么(例如跳过或修改它),并将该行写入另一个文件。但具体的操作超出了这个问题的范围。有许多问题都有类似的措辞,但大多数实际上是一步将整个文件读入内存,而不是逐行阅读。因此,这些解决方案无法用于较大的文件。
pkmbmrz71#
Node.js在v18.11.0中添加了一个新功能,可以逐行读取文件
这是你如何使用这个与一个文本文件,你想读
import { open } from 'node:fs/promises'; myFileReader(); async function myFileReader() { const file = await open('./TextFileName.txt'); for await (const line of file.readLines()) { console.log(line) } }
字符串要了解更多信息,请阅读Node.js文档,这里是文件系统readlines()的链接:https://nodejs.org/api/fs.html#filehandlereadlinesoptions
pdkcd3nj2#
逐行读取文本文件的代码确实令人惊讶地不平凡,而且很难发现。此代码使用NodeJS的readline模块逐行读取和写入文本文件。它可以处理大文件。
const fs = require("fs"); const readline = require("readline"); const input_path = "input.txt"; const output_path = "output.txt"; const inputStream = fs.createReadStream(input_path); const outputStream = fs.createWriteStream(output_path, { encoding: "utf8" }); var lineReader = readline.createInterface({ input: inputStream, terminal: false, }); lineReader.on("line", function (line) { outputStream.write(line + "\n"); });
字符串
eoigrqb63#
下面是MDN文档中的一个函数,它向您展示了如何使用ReadableStream逐行读取File。这与node.js和Web浏览器都兼容。这个示例使用fetch,但如果您已经有File,则可以调用stream()和getReader()。
fetch
stream()
getReader()
async function* makeTextFileLineIterator(fileURL) { const utf8Decoder = new TextDecoder("utf-8"); let response = await fetch(fileURL); let reader = response.body.getReader(); let { value: chunk, done: readerDone } = await reader.read(); chunk = chunk ? utf8Decoder.decode(chunk, { stream: true }) : ""; const re = /\r\n|\n|\r/gm; let startIndex = 0; for (;;) { const result = re.exec(chunk); if (!result) { if (readerDone) { break; } const remainder = chunk.substr(startIndex); ({ value: chunk, done: readerDone } = await reader.read()); chunk = remainder + (chunk ? utf8Decoder.decode(chunk, { stream: true }) : ""); startIndex = re.lastIndex = 0; continue; } yield chunk.substring(startIndex, result.index); startIndex = re.lastIndex; } if (startIndex < chunk.length) { // last line didn't end in a newline char yield chunk.substr(startIndex); } } for await (let line of makeTextFileLineIterator(urlOfFile)) { processLine(line); }
3条答案
按热度按时间pkmbmrz71#
Node.js在v18.11.0中添加了一个新功能,可以逐行读取文件
这是你如何使用这个与一个文本文件,你想读
字符串
要了解更多信息,请阅读Node.js文档,这里是文件系统readlines()的链接:https://nodejs.org/api/fs.html#filehandlereadlinesoptions
pdkcd3nj2#
逐行读取文本文件的代码确实令人惊讶地不平凡,而且很难发现。
此代码使用NodeJS的readline模块逐行读取和写入文本文件。它可以处理大文件。
字符串
eoigrqb63#
下面是MDN文档中的一个函数,它向您展示了如何使用ReadableStream逐行读取File。这与node.js和Web浏览器都兼容。这个示例使用
fetch
,但如果您已经有File,则可以调用stream()
和getReader()
。字符串