Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js基本模块学习(一) fs模块大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是fs模块

Node.js内置的fs模块就是文件系统模块,复制读写文件

和所有其他javascript模块不同,fs模块同时提供了异步和同步的方法

         异步方法

为Javascript是单线程模型,执行io操作时候,javascript代码无需等待,javascript代码无需等待,而是传入回调函数后,继续执行后续javascript代码就是说如果某个I/O操作需要等待服务器发送数据,但是javascript不会在这代码上等待,而是会继续执行后续代码,比如jquery提供的getjson操作。

$.getJSON('http://example.com/ajax',function (data) {
    console.log('IO结果返回后执行...');
});
console.log('不等待IO结果直接执行后续代码...');
         同步的方法

同步的方法,要求javascript在代码上等待,耗时会长。

var data = getJSONSync('http://example.com/ajax');
     
fs模块异步读取文件

      读取文本文件

'use Strict';
var fs = require('fs');
fs.readFile('sample.txt','utf-8',function (err,data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
    }
});
sample.txt 在当前目录下,并且文件编码为utf-8

readFile是node.js标准的回调函数,第一参数err代表错误信息,第二个参数data代表结果

正常读取时候err为空,data为读取到的数据,发生错误时候err表示一个错误对象,data为undefined

if(err){ 表示出错} else{ 表示文件正常读取}

    读取二进制文件

读取二进制文件,不用传入文件编码,这时候data返回的就是一个Buffer对象,在Node.js中Buffer对象就是一个

包含零个或者任意个字节的数组(和Array不一样)

Buffer对象转换为String

var text = data.toString("utf-8");

console.log(text);

String对象转为Buffer

var buffer = Buffer.from(text,'utf-8');

console.log(buffer);


fs模块同步读取文件

//同步读取文件
var data = fs.readFileSync('sample.txt','utf-8');
console.log(data);
如果同步读取文件发生异常,则需要使用try{}catch(err){}捕获


fs模块写文件

      异步写入文件 

//异步写入文件
var writedata = 'Hello,ni hao!';
fs.writeFile('output.txt',writedata,function(err){
    if(err){
        console.log(err);
    }else{
        console.log('write success');
    }
});
writeFile的参数分别为文件名,数据和回调函数

如果传入的数据是String类型,就是按照utf-8编码写入文件文件,如果传入的数据类型是Buffer对象,就会写入二进制文件文件不存在自动创建

回调函数只关心成功与否,err参数即可

    同步写入文件

//同步写入文件
var writedataSyn = 'Hello World!';
fs.writeFileSync('output.txt','this a test data');

stat 获取文件创建时间,大小等信息

'use Strict';

var fs = require('fs');

fs.stat('sample.txt',stat) {
    if (err) {
        console.log(err);
    } else {
        // 是否是文件:
        console.log('isFile: ' + stat.isFile());
        // 是否是目录:
        console.log('isDirectory: ' + stat.isDirectory());
        if (stat.isFile()) {
            // 文件大小:
            console.log('size: ' + stat.sizE);
            // 创建时间,Date对象:
            console.log('birth time: ' + stat.birthtimE);
            // 修改时间,Date对象:
            console.log('modified time: ' + stat.mtimE);
        }
    }
});
stat()也有一个对应的同步函数statSync()


选择同步方法还是异步方法

NODE环境执行的javascript代码是服务器端代码,所以绝大部分在服务器运行期反复执行的代码,必须使用异步代码,否则,同步代码在执行期间,服务器将停止响应,因为Javascript是单线程

但是服务器启动或者结束写入到状态文件可以使用同步方法

大佬总结

以上是大佬教程为你收集整理的node.js基本模块学习(一) fs模块全部内容,希望文章能够帮你解决node.js基本模块学习(一) fs模块所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。