您的位置:首页 > Web前端 > Node.js

NodeJs——(6)文件系统 fs

2016-06-26 14:55 627 查看
(20)文件系统fs

①提供了文件的读取、写入、更名、删除、遍历目录、链接等功能。

所有操作都有异步和同步两种方法。

 

 ②文件读取:readFile

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

参数一:是文件名;

参数二:编码方式,默认二进制(具体搜之前的);

参数三:回调函数(参数一是错误,参数二是读取的文件内容);

 

标准方法:

var fs = require("fs");
fs.readFile("./test.txt", "UTF8", function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
})


 

参数二可以是UTF8,也可以是utf8,也可以是utf-8。效果是一样的

输出:



 

同步版:

readFileSync(文件名,
文件编码)


返回值是data(读取的文件内容);如果有错误发生,会抛出异常,需要使用try和catch来处理;

 

 

③fs.open文件的打开;

原型:

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

 

path是路径,略;

flags表示打开的方式,具体如图:



 

mode表示权限,默认是0666。

6表示4+2;根据推测,1执行,2写,4读,他们的和就是权限;

 

回调函数的fd表示文件描述符:非负整数,表示操作系统内核为当前进程所维护的打开文件的记录表索引。

 

另外,第一个6表示文件所有者的权限;第二个表示同组的用户;第三个表示其他用户;

 

这个命令需要配合write、read,或者其他命令进行操作,例如:

var fs = require("fs");

fs.open("test.txt", "a", 0666, function (err, fd) {
if (err) throw err;
fs.write(fd, "pppp", function (e) {
if (e) throw e;
fs.closeSync(fd);
})
})

 

在test.txt文件里,追加写入pppp四个字符

 

 

④fs.read文件的读取

fs.read(fd, buffer, offset, length, position, callback(err, bytesRead, buffer));

 

他相对于fs.readFile来说,是更为底层的接口。

 

其作用是从fs.open的回调函数中的文件描述符fd中读取数据,并写入buffer指向的缓冲区对象。

offset是buffer写入的偏移量;

length是要从文件中读取的字节数;

position是文件读取的起始位置(当为null时,则从当前文件指针的位置读取);

回调函数传递的bytesRead表示读取的字节数;buffer表示缓冲区对象;

 

如代码:

var fs = require("fs");
fs.open("test.txt", 'r', function (e, fd) {
if (e) throw e;
var buf = new Buffer(8);    //创建一个二进制对象
fs.read(fd, buf, 3, 4, 2, function (err, bytesRead, buffer) {    //读取fd,以二进制形式
if (err)throw err;
console.log(bytesRead);
console.log(buffer);
})
})

输出结果:



第五行的buff表示是上面new出来的Buffer对象;

3表示写入到buf这个对象的第4个位置;

4表示读取fd 4个字节;

2表示从fd的第二个字节开始读取;

bytesRead表示读取到了4个字节;(假如读取到结尾了,那么这个数字将不包含读取到结尾的那些,比如position位置的数字很大的时候,这里可能就是0)

buffer表示前面那个buf对象

 

 

⑤fs模块的函数列表:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: