node.js中文件的几种读取方法及其中两种方法的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/S_clifftop/article/details/80655569

先说一下文件读取的方法,然后再说一下readFile()readFileSync()方法的区别


文件的读取方法

//需要先导入内置模块
var fs = require('fs');

module.exports = {
    //第一种,使用第二、三种就可以了
    readFile: function (path) {
        var buf = new Buffer(1024);
        fs.open(path, 'r+' /*以读写的方式打开文件*/, function (err, fd /*文件描述符*/) {
            if (err) {
                console.log(err);
            } else {
                 //异步读取,同样的,它也有个对应的同步读取fs.readSync()
                fs.read(fd, buf, 0, buf.length, 0, function (err, bytes) {
                    if (err) {
                        console.log(err);
                    } else {
                        if (bytes > 0) {
                            console.log(buf.slice(0, bytes).toString());
                        }
                    }
                });
            }
            fs.close(fd, function (err) {     //异步的方式进行关闭文件
                if (err) {
                    console.log(err);
                }
            });
        });
    },
    //第二种
    readFileSync: function (path) {
        var data = fs.readFileSync(path, 'utf-8');
        return data;
    },
    //第三种
    readFileAsync: function (path) {
        fs.readFile(path, function (err, data) {
            if (err) {
                console.log(err);
            } else {
                console.log(data.toString());
            }
        });
    }
};


两种方法的区别

1、fs.readFile(file)是异步的

  • 不会阻塞后面代码的执行,性能相对下面好,如果需要用到文件中内容,需要写个回调函数

2、fs.readFileSync(file) 是同步的

  • 会阻塞后面代码的执行

不管怎样,两个方法最后都是调用c++同一个读取文件的方法,只不过自定义的方法里面调用的是fstat()fstatSync(),看情况使用,一般用异步的

猜你喜欢

转载自blog.csdn.net/S_clifftop/article/details/80655569