NodeJs——(6)文件系统 fs
(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模块的函数列表:
nodejs vinyl-fs 处理文件时输入问题 使用 nodejs vinyl-fs 复制文件时输出路径不对,还是会有原来的相对路径,原因是用了反斜杠“\”,正斜杠“/”没问题 node版本: v9.3.0 系统:win10 得到两个不同路径 先测试路径p1,p1是反斜杠,将文件输出到test文件夹,结果是多了“bower_components\animate.
相关文章
- nodejs的path模块
- babel : 无法加载文件 D:softwarenodeJsnode-v14.15.4-win-x64babel.ps1,因为在 此系统上禁止运行脚本。有关详细信息,请参阅 https:/g
- Nodejs 发送 TCP 消息的正确姿势
- nodejs web应用服务器搭建(一):跑起你的服务器详解编程语言
- Nodejs经验谈详解编程语言
- [nodejs] nodejs开发个人博客(四)数据模型详解编程语言
- NodeJS Stream 二:什么是 Stream详解编程语言
- javascript结合nodejs实现多文件上传详解编程语言
- nodejs连接Oracle数据库,开发更便捷(node连oracle)
- 我的NodeJs学习小结(一)
- nodejs的10个性能优化技巧