美文网首页
【翻译】Node.js 教程 —— 文件模块

【翻译】Node.js 教程 —— 文件模块

作者: kyuan | 来源:发表于2018-11-25 18:11 被阅读11次

    这节课我们会用 fs 文件模块来读写文件,Node.js 为我们提供了读写文件的能力。要使用这个能力我们需要引入其中的一个核心模块 fs

    var fs = require('fs'); // 命名惯例一般是变量名跟模块名一致
    

    文件模块能为我们做的事情很多,这节课我们聚焦于读写文件。

    读文件(同步方法)

    • 首先我们需要有一个待读取内容的文件,创建一个文本文件 readMe.txt
    • 然后执行读取方法,顾名思义,该方法是一个同步读取文件的方法,意思是位于下方的代码需要等待文件读取完成后才会执行,所以这是阻塞型方法,当然之后会提到异步方法
    • 读取方法的参数为文件路径文件编码,读取的数据是二进制(0 和 1),字符编码决定了如何读取二进制数据为我们能力理解的内容
    var fs = require('fs');
    
    var content = fs.readFileSync('readMe.txt', 'utf8');
    
    console.log('文件读取完才会显示这行');
    

    写文件(同步方法)

    • 我们会在读文件的基础上,将读取的内容写入到一个新的文件里。同样的,这是一个同步方法
    • 第一个参数是写入文件的路径,第二个参数是写入的内容
    var fs = require('fs');
    
    var content = fs.readFileSync('readMe.txt', 'utf8');
    
    fs.writeFileSync('writeMe.txt', content);
    

    下面来看看异步读写文件的版本

    读文件(异步方法)

    去掉 readFileSync 的 Sync 就是异步方法。由于是异步方法,因此当读取操作完成的时候需要有一个回调方法,读取的内容不再需要赋值到变量里,而是在这个回调方法中返回,比起同步版本而言,更好的是它不会阻塞代码。

    fs.readFile('readMe.txt', 'utf8', function(err, content){ // 第一个是错误对象,第二个是成功读取的所有内容
        if(err){
            throw err;
        }
    
        console.log(content);
    });
    
    console.log('这里的内容会优先与文件读取的内容显示');
    

    写文件(异步方法)

    我们需要读取文件内容后执行写文件的操作,因此需要在回调方法中进行写文件的操作

    fs.readFile('readMe.txt', 'utf8', function(err, content){ // 第一个是错误对象,第二个是成功读取的所有内容
        if(err){
            throw err;
        }
    
        fs.writeFile('writeMe.txt', content, function(err){
            console.log(err);
        })
    });
    
    console.log('这里的内容会优先与文件读取的内容显示');
    

    异步代码在多请求的情况下效率会很高,同步代码则需要等待每个请求处理完成,会造成延误感觉,因此大多数情况下会使用异步代码。

    相关文章

      网友评论

          本文标题:【翻译】Node.js 教程 —— 文件模块

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