15 node基础——异步文件写入


问一:异步文件写入步骤:

1 导入模块

var fs=require("fs");

2.打开文件

fs.open(path,flafs[,mode],callback)

参数说明:

path:要打开的文件按的路径

flafs:打开文件之后要干什么? w表示写,r表示读

callback:回调函数,有回调函数表示没有返回值,那么是异步的方法,

回调函数有两个参数 :err 错误对象,如果没有错误则为null ,   fs文件的描述符:

//引入fs模块
var fs = require("fs");


//打开文件
fs.open("hello2.txt","w",function () {
    
          console.log(arguments);// 输出: {'0':null,'1':3}   第一个表示错误对象,第二个表示文件描述符
    }
});

3.异步写入:

 fs.write(fd,string[,postion[,encoding]],callback)

 fd:文件标识

string:写入内容

callback:回调函数

综合举列子:

 异步函数,什么时候对文件操作完毕后,什么时候执行回调函数,所以执行顺序,不像同步函数:从上到下执行,异步可能是先执行下面的代码,

在执行回调函数的代码

var fdout;
fs.open("hello2.txt","w",function (err , fd) {
    //判断是否出错
    if(!err){
     fdout=fd
        console.log("回调函数中的标识fdout",fdout);
    }else{
        console.log(err);
    }
});

console.log("程序向下执行~~~,回调函数外的fdout",fdout);

输出结果:

程序向下执行~~~,回调函数外的fdout undefined
回调函数中的标识fdout 3

 综合举列子:

fs.open("hello2.txt","w",function (err , fd) {
    //判断是否出错
    if(!err){
        //如果没有出错,则对文件进行写入操作
        fs.write(fd,"这是异步写入的内容",function (err) {
            if(!err){
                console.log("写入成功~~");
            }
            //关闭文件
            fs.close(fd , function (err) {
                if(!err){
                    console.log("文件已关闭~~~");
                }
            });
        });
    }else{
        console.log(err);
    }
});