繁体   English   中英

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

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

这就是我所拥有的:

#! /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吗? 我想那可能是你的新朋友。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM