当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Node.js中同步读取文件内容?》经验,为你挑选了2个好方法。

这就是我所拥有的:

#! /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

Gazler.. 37

您需要使用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);
})


Peter Paul K.. 6

那是因为你异步读取文件.尝试:

#! /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文档



1> Gazler..:

您需要使用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);
})



2> Peter Paul K..:

那是因为你异步读取文件.尝试:

#! /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文档

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有