8:Node.js 文件系统

原文出自:http://www.w3cschool.cc/nodejs/nodejs-fs.html

Node.js 文件系统

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

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


fs.readFile

Node.js读取文件函数语法如下:

fs.readFile(filename,[encoding],[callback(err,data)])
  • filename(必选),表示要读取的文件名。
  • encoding(可选),表示文件的字符编码。
  • callback 是回调函数,用于接收文件的内容。

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

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

varfs = require(‘fs‘);
fs.readFile(‘content.txt‘, function(err, data) {
	if(err) {
		console.error(err);
	} else{
		console.log(data);
	}
});

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

<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 指定编码:

var fs = require(‘fs‘);
	fs.readFile(‘content.txt‘, ‘utf-8‘, function(err, data) {
	if (err) {
		console.error(err);
	} else {
		console.log(data);
	}
});

那么运行结果则是:

Text 文本文件示例

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

{ [Error: ENOENT, no such file or directory ‘content.txt‘] errno: 34, code: ‘ENOENT‘,
path: ‘content.txt‘ }

fs.readFileSync

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

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


fs.open

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

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

fs.read

fs.read语法格式如下:

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 的示例。

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, null, function(err, bytesRead, buffer) {
		if(err) {
			console.error(err);
			return;
		}
		console.log(‘bytesRead: ‘ + bytesRead);
		console.log(buffer);
	})
});

运行结果是:

bytesRead: 8
<Buffer 54 65 78 74 20 e6 96 87>

一般来说,除非必要,否则不要使用这种方式读取文件,因为它要求你手动管理缓冲区 和文件指针,尤其是在你不知道文件大小的时候,这将会是一件很麻烦的事情。


fs 模块函数表

时间: 2024-10-08 22:25:56

8:Node.js 文件系统的相关文章

Node.JS文件系统解析

1.Node.js 文件系统 var fs = require("fs") 2.异步和同步 读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). var fs = require('fs') fs.readFile( 'a.txt','utf-8', function (err,data) { if( err ) { console.error(err) }else{ console.log( "not aynsc===>

Node.js 文件系统

Node.js 文件系统 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node 导入文件系统模块(fs)语法如下所示: var fs = require("fs") 异步和同步 Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error). 建议大家是用

Node.js 文件系统fs模块

Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync().我们以几个函数为代表,介绍 fs 常用的功能,并列出 fs 所有函数 的定义和功能. 一.fs 模块函数表 二.fs 部分API fs.readFile Node.js读取文件函数语法如下

Node.js文件系统、路径的操作详解

17173 17173 2 75 2014-12-12T05:06:00Z 2014-12-12T05:06:00Z 21 2735 15595 www.17173.com 129 36 18294 14.00 Clean Clean false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-r

Node.js文件系统、路径的操作函数

目录 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到缓冲区中: 6.写文件,将缓冲区内数据写入使用fs.open打开的文件 7.刷新缓存区; 8.创建目录; 9.读取目录; 10.查看文件与目录的信息; 11.查看文件与目录的是否存在 12.修改文件访问时间与修改时间 13.修改文件或目录的操作权限 14.移动/重命名文件或目录 15.删除空目录 16.监视文件 17.取消监视文件 18.文件流 19.创建读取流 20.创建写入

node.js文件系统

FS文件系统 第一次用这个的时候非常爽,可以在代码层编写“增删改查”文件的功能.分解里面提供的方法,接下来我们从头创建开始,最后删除文件结束,一套流程接下fs文件系统的神奇. 要使用fs文件系统就要引用,否则无法实现功能,代码如下 //引入文件系统 var fs = require('fs'); 新建目录:mkdir //引入文件系统 var fs = require('fs'); //创建目录 fs.mkdir('./html',function(err){ if(err){ console.

Node.js 文件系统------------读取文件

fs.read(fd, buffer, offset, length, position, callback)参数使用说明如下: fd - 通过 fs.open() 方法返回的文件描述符. buffer - 数据写入的缓冲区. offset - 缓冲区写入的写入偏移量. length - 要从文件中读取的字节数. position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取. callback - 回调函数,有三个参数err, bytesRea

【node.js】全局变量、常用工具、文件系统

学习链接:http://www.runoob.com/nodejs/nodejs-global-object.html 在 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 全局对象与全局变量 注意: 永远使用 var 定义变量以避免引入全局变量,因为全局变量会污染 命名空间,提高代码的耦合风险. __filename __dirname setTimeout

Node.js:Web模块、文件系统

一.web模块 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL,与客户端的网络浏览器配合.大多数 web 服务器都支持服务端的脚本语言(php.python.ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器.目前最主流的三个Web服务器是Apache.Nginx.IIS. web应用架构: Client - 客户端,一般指浏览器,浏览器可以通过 HTTP