Node.js的FileSystem文件模块


FileSystem模块是类似UNIX(POSIX)标准的文件操作API,用于操作文件系统——读写目录、读写文件——Node.js底层使用C程序来实现,这些功能是客户端JS所不具备的。

Nodejs导入文件系统模块(fs)语法如下所示:

1
var fs = require("fs");

异步和同步

Node.js文件系统(fs模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync()。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。同步则没有回调函数。
建议大家是用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。

打开文件

语法如下:

1
fs.open(path,flags[,mode],[callback(err,data)]);//异步

  • path - 文件的路径。
  • mode - 设置文件模式(权限),文件创建默认权限为0666(可读,可写)。
  • callback - 回调函数,带有两个参数如:callback(err,fd)。
  • flags - 文件打开的行为。具体如下:
flag description
r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 ‘w’,但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 ‘a’, 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。

获取文件信息

语法如下:

1
fs.stat(path,[callback(err,stats)]);//异步

fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性。
stats类中的方法有:

方法 描述
stats.isFile() 如果是文件返回 true,否则返回 false。
stats.isDirectory() 如果是目录返回 true,否则返回 false。
stats.isBlockDevice() 如果是块设备返回 true,否则返回 false。
stats.isCharacterDevice() 如果是字符设备返回 true,否则返回 false。
stats.isSymbolicLink() 如果是软链接返回 true,否则返回 false。
stats.isFIFO() 如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否则返回 false。

写入文件

语法如下:

1
2
fs.writeFile(filename,data[,options],[callback]);//异步
fs.writeFileSync(filename,data); //同步

如果文件存在,该方法写入的内容会覆盖旧的文件内容。

  • data -要写入文件的数据,可以是String(字符串)或Buffer(流)对象。
  • options - 该参数是一个对象,包含{encoding,mode,flag}。默认编码为utf8,模式为0666,flag为’w’;

追加内容

语法如下:

1
2
fs.appendFile(filename,data[,options],[callback]);//同步
fs.appendFileSync(filename,data[,options]); //同步

读取文件

语法如下:

1
2
3
fs.read(fd,buffer,offset,length,position,[callback]);//异步
var buf = fs.readFile(filename,[encoding],[callback(err,data)]);//异步读取
var buf = fs.readFileSync(filename,[encoding]);//同步读取

  • fd - 通过 fs.open() 方法返回的文件描述符。
  • buffer - 数据写入的缓冲区。
  • offset - 缓冲区写入的写入偏移量。
  • length - 要从文件中读取的字节数。
  • position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
  • encoding,编码格式,该项是可选的。

关闭文件

语法如下:

1
fs.close(fd,callback);//异步

  • fd - 通过 fs.open() 方法返回的文件描述符。

截取文件

语法如下:

1
fs.ftruncate(fd,len,callback);//异步

  • fd - 通过 fs.open() 方法返回的文件描述符。
  • len - 文件内容截取的长度。

删除文件

语法如下:

1
fs.unlink(path,callback);

创建目录

语法如下:

1
fs.mkdir(path[,mode],callback);

  • mode - 设置目录权限,默认为 0777。

读取目录

语法如下:

1
fs.readdir(path,callback);

删除目录

语法如下:

1
fs.rmdir(path,callback);

文章目錄
  1. 1. 异步和同步
  2. 2. 打开文件
  3. 3. 获取文件信息
  4. 4. 写入文件
  5. 5. 追加内容
  6. 6. 读取文件
  7. 7. 关闭文件
  8. 8. 截取文件
  9. 9. 删除文件
  10. 10. 创建目录
  11. 11. 读取目录
  12. 12. 删除目录
|