当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js fs.readFileSync()用法及代码示例


fs.readFileSync()方法是fs模块的内置应用程序编程接口,用于读取文件并返回其内容。

在fs.readFile()方法中,我们可以以非阻塞异步方式读取文件,但在fs.readFileSync()方法中,我们可以以同步方式读取文件,即,我们告诉node.js阻塞其他并行进程并执行当前的文件读取过程。即,当调用fs.readFileSync()方法时,原始节点程序停止执行,并且节点等待fs.readFileSync()函数执行,获得该方法的结果后,其余节点程序将被执行。

用法:



fs.readFileSync( path, options )

参数:

  • path:它采用文本文件的相对路径。路径可以是URL类型。该文件也可以是文件描述符。如果两个文件都在同一个文件夹中,只需在文件名中加上引号即可。
  • options:它是一个可选参数,包含编码和标志,编码包含数据规范。默认值为null,它返回原始缓冲区,并且该标志包含文件中操作的指示。默认值为“ r”。

返回值:此方法返回文件的内容。

范例1:

  • input.txt文件内容:
    This is some text data which is stored in input.txt file.
  • index.js文件:
    // Node.js program to demonstrate the   
    // fs.readFileSync() method  
      
    // Include fs module 
    const fs = require('fs'); 
       
    // Calling the readFileSync() method 
    // to read 'input.txt' file 
    const data = fs.readFileSync('./input.txt', 
                {encoding:'utf8', flag:'r'}); 
      
    // Display the file data 
    console.log(data);
  • 输出:
    This is some text data which is stored in input.txt file.
    

现在,问题是该fs.readFileSync()方法与fs.readFile()方法有何不同。我们可以找到一个何时使用fs.readFileSync()方法和fs.readFile()方法的示例。

假设有两个输入文件input1.txt和input2.txt,并且两个文件都保存在同一文件夹中。

范例2:

  • input1.txt文件的内容:
    (1) This is some text data which is stored in input1.txt file.
  • input2.txt文件内容:
    (2) This is some text data which is stored in input2.txt file.
  • index.js文件:
    // Node.js program to demonstrate the   
    // fs.readFileSync() method  
      
    // Include fs module 
    const fs = require('fs'); 
       
    // Callling the fs.readFile() method 
    // for reading file 'input1.txt' 
    fs.readFile('./input1.txt',  
            {encoding:'utf8', flag:'r'}, 
            function(err, data) { 
        if(err) 
            console.log(err); 
        else
            console.log(data); 
    }); 
       
    // Calling the fs.readFileSync() method  
    // for reading file 'input2.txt' 
    const data = fs.readFileSync('./input2.txt', 
                  {encoding:'utf8', flag:'r'}); 
      
    // Display data 
    console.log(data);
  • 输出:
    (2) This is some text data which is stored in input2.txt file.
    (1) This is some text data which is stored in input1.txt file.
    

观察:我们可以观察到,当我们调用读取“ input1.txt”的fs.readFile()方法之后,我们调用了读取“ input2.txt”文件的fs.readFileSync()方法,但是看到输出,我们发现首先读取“ input2.txt”文件,然后读取“ input1.txt”文件,这是因为编译器编译node.js文件时,它首先调用fs.readFile()方法,该方法读取文件,但是并行执行后,它将继续编译其余文件程序也是如此,之后它调用fs.readFileSync()方法读取另一个文件,当调用readFileSync()方法时,编译器将停止其他并行进程(此处是从readFile()方法中读取“ input1.txt”文件)并继续进行中的过程到此结束,无论正在进行的进程何时结束,编译器都会恢复剩余的进程,这就是为什么我们观察到首先打印“ input2.txt”的内容而不是“ input1.txt”的原因。因此,我们可以使用fs.readFileSync()方法执行诸如暂停其他并行进程并同步读取文件之类的任务。

参考: https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options




相关用法


注:本文由纯净天空筛选整理自NigattennoGokui大神的英文原创作品 Node.js | fs.readFileSync() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。