0

我有一个.txt要保存在 JS 数组中的文件,然后console.log是该数组。我从这个答案中知道如何将文件读入数组,但问题是当我尝试访问console.log数组时,它会将其记录为空。这是我的代码:

const fs = require('fs')
let arr = []
let fileReader = async () => {
  await fs.readFile('temp.txt', (err, data) => { 
    if (err) throw err; 
    console.log(data.toString()); // confirming that line is successfully read
    arr.push(data.toString());
  })
  console.log(arr)
}
fileReader()

我想它console.log会等到数组完成填充fs.readFile(),所以它会打印填充的数组。请注意,我console.log在读取每一行时,以确认文本确实被推送到数组中。

有谁知道为什么这种方法行不通,或者我该如何以不同的方式做到这一点?我现在想坚持异步readFile而不是同步readFileSync。请注意,如果我确实想同步执行此操作,则此代码有效:

const fs = require('fs')
let arr = fs.readFileSync("temp.txt").toString('utf-8').split("\n")
console.log(arr)
4

1 回答 1

-1

获得文件数据后,data.toString()您可以将其拆分为\n. 例如:


let data = data.toString()
let data_rows_arr = data.split('\n') //defines a new line seperator.

for(row of data_rows_arr){
   //Do something with your rows
}

希望对你有所帮助:)

于 2020-12-01T20:09:15.150 回答