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
那是因为你是异步读取文件的。尝试:
#! /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);
});
你见过readFileSync
吗?我想那可能是你的新朋友。
您需要使用 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) {
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
那是因为你是异步读取文件的。尝试:
#! /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);
});
你见过readFileSync
吗?我想那可能是你的新朋友。
您需要使用 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);
})