如何在Node.js中同步读取文件的内容

How to read the content of files synchronously in Node.js?

本文关键字:文件 读取 同步 Node js      更新时间:2023-09-26

这就是我所拥有的:

#! /usr/bin/env node
var fs = require('fs'),
    files = fs.readdirSync(__dirname + '/files/'),
files.forEach(function(file) {
  fs.readFile(__dirname + '/files/' + file, 'utf8', function (error, data) {
    console.log(data)
  })
})

即使我使用readdirSync,输出仍然是异步的:

alex@alex-K43U:~/node/readFiles$ node index.js 
foo 1
foo 3
foo 2

如何修改代码以使输出同步?

alex@alex-K43U:~/node/readFiles$ node index.js 
foo 1
foo 2
foo 3

您需要使用readFileSync,您的方法仍然是异步读取文件,这可能会导致打印内容的顺序紊乱,具体取决于每次读取的回调时间。

var fs = require('fs'),
    files = fs.readdirSync(__dirname + '/files/');
files.forEach(function(file) {
  var contents = fs.readFileSync(__dirname + '/files/' + file, 'utf8');
  console.log(contents);
})

这是因为异步读取文件。尝试:

#! /usr/bin/env node
var fs = require('fs'),
    files = fs.readdirSync(__dirname + '/files/'),
files.forEach(function(file) {
  var data = fs.readFileSync(__dirname + '/files/' + file, 'utf8');
  console.log(data);
});

"fs.readFileSync()"的NodeJS文档

你见过readFileSync吗?我想那可能是你的新朋友。