gpt4 book ai didi

javascript - fs.appendFile 没有按顺序追加数据?

转载 作者:行者123 更新时间:2023-11-30 00:28:41 25 4
gpt4 key购买 nike

以下代码的作用是从一个文件夹中取出几个文本文件并将它们附加到一个文件中:

#!/usr/bin/env node

'use strict'

const fs = require('fs')
, input = process.argv[2]

if (process.argv.length < 3) {
console.log('Usage: node ' + process.argv[1] + ' FILENAME')
process.exit(1)
}

fs.readdir(__dirname + `/${input}/`, (err, files) => {
if (err) {
return
}

files.forEach((file, index) => {
fs.readFile(__dirname + `/${input}/` + file, 'utf8', (err, data) => {
let result

if (err) {
console.log(err)
}

if (index == files.length - 1) {
result = `${data}`
} else {
result = `${data}\n`
}

fs.appendFile("merged.txt", result, (err) => {
if (err) {
console.log(err)
} else {
console.log(result)
}
})
})
})
})

假设我有一个名为 docs 的文件夹,里面有 doc1.txt、doc2.txt、doc3.txt及其内容## Doc 1, # # Doc 2 和 ## Doc 3 分别。该代码将生成一个名为 merged.txt` 的文件,其内容为:

## Doc 1

## Doc 2

## Doc 3

它工作正常。但有时顺序是错误的。我会得到类似的东西:

## Doc 1

## Doc 3

## Doc 2

特别是当有很多文件时。

如何修改代码以防止出现此问题?

最佳答案

您可以将 fs.appendFile 更改为 fs.appendFileSync(快速而肮脏,但不是最佳解决方案),或者您可以使用 连续运行事件async 模块的 >eachSeries 方法 ( https://www.npmjs.com/package/async#eachSeries )。

关于javascript - fs.appendFile 没有按顺序追加数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30448386/

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