gpt4 book ai didi

Node.js WriteStream 在关闭之前不会将数据写入文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:51 29 4
gpt4 key购买 nike

如何在调用 WriteStream.write() 时将数据写入文件?

编辑:事实证明,当我使用 REPL 并调用该函数时,这是有效的。但是,这在我的程序中不起作用:

import * as FS from "fs";
import { LetterGroup } from "./LetterGroup";
import { Dictionary } from "./Dictionary";
import { Word } from "./Word";
import * as OS from "os";

const groups: Array<LetterGroup> = LetterGroup.letterGroupsFromString(FS.readFileSync("./letterGroups.txt").toString());
const dictionary = Dictionary.create(FS.readFileSync("./dictionary.txt").toString());

const inputStr: string = FS.readFileSync("./input.txt").toString();
const inputWords = new Array<Word>();
const fileStream = FS.createWriteStream("./output.txt");

for (const line of inputStr.trim().split(OS.EOL))
{
inputWords.push(new Word(line));
}

function permute(index: number)
{
index = Math.floor(index);

if (!(index >= 0 && index < inputWords.length))
{
return;
}

const word: Word = inputWords[index];

let outputString: string = "";

outputString += `Valid permutations of '${word.wordString}':` + OS.EOL;

console.log(`Testing '${ word.wordString }'...`);

for (const permutation of word.generatePermutations(groups, dictionary, true))
{
outputString += permutation.wordString + OS.EOL;
}

outputString += OS.EOL;
console.log();

if (!fileStream.write(outputString))
{
console.log("Wrote to file too fast! Will resume writing once the system catches up...");
fileStream.once("drain", () => permute(index));
return;
}

permute(index + 1);
}

permute(0);

应该注意的是,word.generatePermutations 是一个极其密集的函数,通常可能需要几分钟(有时超过一个小时)才能返回。我的问题是,它返回的数据应该立即写入输出文件,这样整个程序就不需要完成运行才能读取结果。希望有人能够理解这一切。

澄清一下,写入 REPL 中的 WriteStream 的数据会立即写入文件,而在我的程序中,直到整个程序运行完毕才将数据写入文件。

最佳答案

关于Node.js WriteStream 在关闭之前不会将数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410361/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com