nodejs 文件系统

Posted SnowRomance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 文件系统相关的知识,希望对你有一定的参考价值。

Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX 文件系统操作。

与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。我们以几个函数为代表,介绍 fs 常用的功能,并列出 fs 所有函数 的定义和功能。


1.fs.readFile

fs.readFile(filename, [encoding], [callback(err,data)])

filename(必选), 表示要读取的文件名

encoding(可选),表示文件的字符编码

callback 是回调函数,用于接收文件的内容


如果不指 定 encoding,则 callback 就是第二个参数。回调函数提供两个参数 err 和 data,err 表 示有没有错误发生,data 是文件内容。如果指定了 encoding,data 是一个解析后的字符 串,否则 data 将会是以 Buffer 形式表示的二进制数据。


例如以下程序,我们从content.txt 中读取数据,但不指定编码:

1 2 3 4 5 6 7 8 varfs = require( 'fs' ); fs.readFile( 'content.txt' function (err, data)      if (err)          console.error(err);        else          console.log(data);      );

假设content.txt 中的内容是UTF-8 编码的 Text 文本文件示例,运行结果如下:

1 <Buffer 54 65 78 74 20 e6 96 87 e6 9c ac e6 96 87 e4 bb b6 e7 a4 ba e4 be 8b>

这个程序以二进制的模式读取了文件的内容,data 的值是 Buffer 对象。如果我们给

fs.readFile 的 encoding 指定编码:

1 2 3 4 5 6 7 8 var  fs = require( 'fs' );      fs.readFile( 'content.txt' 'utf-8' function (err, data)      if  (err)          console.error(err);        else           console.log(data);      );

那么运行结果则是:

1 Text 文本文件示例

当读取文件出现错误时,err 将会是 Error 对象。如果content.txt 不存在,运行前面 的代码则会出现以下结果:

1 2 [Error: ENOENT, no such file or directory  'content.txt' ] errno: 34, code:  'ENOENT' , path:  'content.txt' 



2.fs.readFileSync

fs.readFileSync(filename, [encoding])是 fs.readFile 同步的版本。它接受 的参数和 fs.readFile 相同,而读取到的文件内容会以函数返回值的形式返回。如果有错 误发生,fs 将会抛出异常,你需要使用 try 和 catch 捕捉并处理异常。

注意:与同步I/O 函数不同,Node.js 中异步函数大多没有返回值。


3.fs.open

fs.open(path, flags, [mode], [callback(err, fd)])是POSIX open 函数的 封装,与C 语言标准库中的 fopen 函数类似。它接受两个必选参数,path 为文件的路径, flags 可以是以下值。

  • r :以读取模式打开文件。
  • r+ :以读写模式打开文件。
  • w :以写入模式打开文件,如果文件不存在则创建。
  • w+ :以读写模式打开文件,如果文件不存在则创建。
  • a :以追加模式打开文件,如果文件不存在则创建。
  • a+ :以读取追加模式打开文件,如果文件不存在则创建


4.fs.read

fs.read语法格式如下:

1 fs.read(fd, buffer, offset, length, position, [callback(err, bytesRead, buffer)])

参数说明:

  • fd: 读取数据并写入 buffer 指向的缓冲区对象。
  • offset: 是buffer 的写入偏移量。
  • length: 是要从文件中读取的字节数。
  • position: 是文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
  • callback:回调函数传递bytesRead 和 buffer,分别表示读取的字节数和缓冲区对象。

以下是一个使用 fs.open 和 fs.read 的示例。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 varfs = require( 'fs' ); fs.open( 'content.txt' 'r' function (err, fd)      if (err)          console.error(err);          return ;           varbuf = newBuffer(8);      fs.read(fd, buf, 0, 8, <

以上是关于nodejs 文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs 表达并承诺不会做我期望的事情

浏览器地址栏按回车发生了什么事情

理解「分布式系统」曾经发生的事情

Node.js——NodeJs基础

使用curl在Ubuntu中安装节点

模块导出,nodejs对于护照身份验证需要太长时间

(c)2006-2024 SYSTEM All Rights Reserved IT常识