美文网首页程序员我爱编程
Node.js与文件系统操作(一)

Node.js与文件系统操作(一)

作者: 同Young不同样 | 来源:发表于2018-08-12 11:47 被阅读29次

        Node.js中的fs模块与文件系统操作相关,主要用于实现文件系统的操作。fs模块中提供了大量与文件系统相关的操作方法,这些方法分为同步方法和异步方法,开发人员可以根据实际需要进行选择,从而对文件系统进行操作。

    一、fs模块的同步方法和异步方法

        fs模块中提供了很多与文件操作相关的方法,例如目录创建,文件创建,文件内容的写入与删除等操作。这些与文件操作相关的方法在对文件系统进行操作时大多都有同步与异步这两种方式。
        在这些方法中以Sync为后缀的方法都是同步方法,同步方法在执行时需要立即返回操作结果,一个同步方法在操作结束之前不可以执行之后的方法。不以Sync作为后缀的方法都是异步的操作方法,异步方法的特点是不会阻塞程序的执行,异步方法的执行结果是作为回调函数的参数进行返回的。在使用异步方法进行文件操作的时候,并不能保证方法执行结果返回的顺序,因为每一个异步方法进行文件操作时需要的时间长短是不完全相同的,时间较短的操作方法会先返回操作结果,耗时长的异步方法后返回结果。

    二、对文件的读写操作

    • readFile()方法和readFileSync()方法:
          readFile()方法用于对文件以异步的方式进行读操作,readFile()方法用于对文件以同步的方式进行读操作。程序示例:
      (1)创建readFile.txt文本文件作为异步方法读取内容的文件:
    使用异步的方法读取文件内容。
    

        (2)创建readFileSync.txt文本文件作为同步方法读取内容的文件:

    使用同步的方法读取文件内容。
    

        (3)创建app.js:

    var fs = require("fs"); //加载fs模块
    
    /*
    *使用异步的方式读取文件内容
    */
    fs.readFile('./readFile.txt', function(err, data){
        //如果读取文件过程中发生错误则将错误信息输出
        if(err){
            console.log(err);
        }else{
            console.log(data.toString());   //使用toString()方法将读取到的内容转换成字符串并输出
        }
    });
    
    /*
    *使用同步的方式读取文件内容
    */
    try{
        var content = fs.readFileSync('./readFileSync.txt');
        console.log(content.toString());    //使用toString()方法将读取到的内容转换成字符串并输出
    }catch(e){
        console.log('读取文件内容时发生错误:' + e);
    }
    

        程序运行截图:


    readFile()方法和readFileSync()方法

        异步读取文件内容的readFile()方法可以接收三个参数:

    readFile(filename, [options], callback);
    
    • filename:必选参数,表示被读取的文件的完整路径以及文件名称。
    • options:可选参数,表示读取文件时需要使用的选项:
    options选项 描述
    ‘r’ 读取文件。
    ‘r+’ 读取并写入文件。
    ‘rs’ 以同步方式读取文件并且忽略本地文件系统缓存。
    ‘w’ 写入文件,如果文件不存在就创建文件。
    ‘wx’ 以排他的方式写入文件。
    ‘w+’ 读取并写入文件。
    ‘wx+’ 读取并写入文件,是以排他的方式打开文件。
    ‘a’ 追加写入文件,如果文件不存在就创建文件。
    ‘ax’ 追加并写入文件,以排他的方式打开文件。
    ‘a+’ 读取并追加文件,如果文件不存在就创建文件。
    • callback:必选参数,表示文件读取完成之后返回数据的回调函数。程序示例:
    function(err, data){
        //回调函数体
    }
    

    • writeFile()方法和writeFileSync()方法
          writeFile()方法和writeFileSync()方法都可以向指定的文件中写入文件内容。程序示例:
    var fs = require("fs");
    
    /*
    *以异步的方式向文件中写入内容
    */
    var string = "通过异步方式写入文件的内容";
    fs.writeFile('./writeFile.txt', string, function(err){
        if(err){
            console.log('向文件中写入内容时发生错误:' + err);
        }else{
            console.log('向文件中写入内容成功。');
        }
    });
    

        程序运行截图:


    writeFile()方法
    fs.writeFile(filename, data, [options], callback);
    

        writeFile()方法中可以接受以下四个参数:

    • filename:必选参数,表示被写入内容的文件,包括文件的完整路径以及文件名称。
    • data:必选参数,表示被写入文件的内容,该参数可以是字符串也可以是Buffer示例对象的缓存区中的内容。
    • options:可选参数,该参数是一个对象,用于指定在写入文件时需要使用的选项。该对象包括的属性有flag属性,mode属性,encoding属性。flag属性表示对该文件执行何种操作,flag支持的选项有:
    flag选项 说明
    ‘r’ 读取文件。
    ‘r+’ 读取并写入文件。
    ‘rs’ 以同步方式读取文件并且忽略本地文件系统缓存。
    ‘w’ 写入文件,如果文件不存在就创建文件。
    ‘wx’ 以排他的方式写入文件。
    ‘w+’ 读取并写入文件。
    ‘wx+’ 读取并写入文件,是以排他的方式打开文件。
    ‘a’ 追加写入文件,如果文件不存在就创建文件。
    ‘ax’ 追加并写入文件,以排他的方式打开文件。
    ‘a+’ 读取并追加文件,如果文件不存在就创建文件。

        mode属性可以用于指定该文件被打开时的读写权限,默认值为066(可读可写)。该属性值是用一个3位数字表示文件或目录所有者、所属组以及其他人的读写权限。1表示可执行权限,2表示可写权限,4表示可读权限。
        encoding属性可以用于指定以何种字符编码方式将内容写入到文件中。默认的编码方式是“utf8”,也可以改成“base64”、“ascii”或者其他的字符编码方式。

    相关文章

      网友评论

        本文标题:Node.js与文件系统操作(一)

        本文链接:https://www.haomeiwen.com/subject/fzhsbftx.html