Node.js 文件系统

试用了三种相关方法

读取文件方法,打开文件方法,写数据方法

fs.readFile

fs.open

fs.write

Node.js 文件系统

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

与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个版本,例如读取文件内容的函数有异步的 fs.readFile() 

和同步的 fs.readFileSync()。

fs.readFile

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

  • filename(必选),表示要读取的文件名。
  • encoding(可选),表示文件的字符编码。
  • callback 是回调函数,用于接收文件的内容。(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 文本文件示例

fs.open

fs.open(path, [mode], [callback(err, fd)]

path 为文件的路径, mode 为读写模式(常用的a模式
fd 为文件描述符(用于打开文件方法中的读写文件方法
r :以读取模式打开文件,数据流位置在文件起始处
r+ :以读写模式打开文件,数据流位置在文件起始处
w :以写入模式打开文件,如果文件不存在则创建,文件存在则清零,数据流位置在文件起始处
w+ :以读写模式打开文件,如果文件不存在则创建,文件存在则清零,数据流位置在文件起始处
a :以追加模式打开文件,如果文件不存在则创建,数据流位置在文件结尾处追加
a+ :以读取追加模式打开文件,如果文件不存在则创建,数据流位置在文件结尾处追加


fs.write(切记新建编辑器文件file.js时,保存为utf-8编码,否则写入的中文一直是乱码

fs.write(fd, buffer, offset, length, position, [callback(err, bytesWrite)])

 
 
  • fd: 对应的文件描述符
  • buffer: 要写入缓冲区的数据
  • offset: 待写入数据的起始位置
  • length:待写入数据长度
  • position: 从文件中的什么位置开始写入数据,如果 position 的值为 null,则会从当前文件指针的位置读取(由于是追加模式打开,指针位于文件末尾)。
  • callback:回调函数传递bytesWrite(写入的字节数)。
fs.open('writefile.txt', 'a', function opend(err, fd) { 
	if(err) { 
		console.error(err); 
		return; 
	} 
	var writeBuffer = new Buffer('write file 123 写文件 //>>>>') ,
		bufferPosition = 0,
		bufferLength = writeBuffer.length,
		filePosition = null;
	fs.write(fd,
		     writeBuffer,
		     bufferPosition,
		     bufferLength,
		     filePosition,
		     function wrote(err,written){
	           if(err){throw err;}
			   console.log(err);
			 });
  }); 


参考 http://www.w3cschool.cc/nodejs/nodejs-fs.html



 
 





你可能感兴趣的:(Node.js 文件系统)