它可以很好地处理小文件,但对于大文件,它显示:
RangeError[ERR_FS_FILE_TOO_LARGE]:文件大小(2259809293)大于可能的缓冲区:2147483647字节
我需要打开和阅读文本文件。 我的代码是:
let text = fs.readFileSync("12.txt").toString('utf-8');;
let textByLine = text.split("\n")
let arrayForUse = textByLine.map(line => line.split(' ').filter(elementOfArray => elementOfArray !== ''));
let finalArray = []
arrayForUse.forEach(compareElement => {
let sameItems = [];
for(element of arrayForUse) {
if(compareElement[0] === element[0] && compareElement[1] === element[1] && compareElement[2] !== element[2]) {
sameItems.push(compareElement[2]);
sameItems.push(element[2]);
}
}
finalArray.push(sameItems);
})
let unique = finalArray
.filter(element => element.length !== 0)
.map(item => [...new Set(item)].join('='));
console.log([...new Set(unique)]);```
不能将ReadFileSync
用于大文件。 它会将文件读入内存,而您的文件大于允许的最大内存缓冲区大小。
由于您只是按换行等方式将其拆分,因此您可以在文件流上使用readline
模块,如这里的答案所述,或者使用line-by-line
NPM模块(可以证明,它比readline
更适合于这里)。