Buffer对象的使用(了解)javascript
//开辟4个字节的空间存储数据 let buffer = new Buffer(4); //建立完成后,buffer分配的内存可能有数据 //清空buffer对象 buffer.fill(0);
//直接存储数据在buffer中 let buffer = new Buffer("hello itcast");
读取文件中遇到的Buffercss
var fs = require("fs"); fs.readFile("01-buffer.js", function (err,content) { //此处的content就是Buffer console.log(content); }); fs.readFile("01-buffer.js","utf8", function (err,content) { //指定了编码后,获取到的content是字符串 console.log(content); });
Buffer支持的编码java
支持gb2312-第三方包 iconv-litenode
Buffer的常见方法web
File Systemnpm
操做文件夹编程
mkdir() 异步建立文件夹后端
rmdirSync() 同步删除文件夹浏览器
rmdir() 异步删除文件夹安全
判断文件是否存在
操做文件
stat() 获取文件的相关属性
watchFile() 监控文件或文件夹内文件的改变
练习:监视文件abc/abc.txt,若是文件发生变化把内容拷贝到target/123.txt
拷贝文件:
文件流操做
拷贝大文件带进度
```javascript "use strict"
const fs = require("fs");
let sourceFile ="xdy.avi"; let targetFile = "123.itcast";
//文件流读写 进行大文件复制 //建立读流对象 let rs = fs.createReadStream(sourceFile); //建立写流对象 let ws = fs.createWriteStream(targetFile);
//文件大小 let fileSize = fs.statSync(sourceFile).size; //总共写入的大小 let writeTotal = 0; //监听data事件 rs.on("data", chunk => { //每次读到的数据 buffer对象 writeTotal += chunk.length; //把chunk写入目标文件 ws.write(chunk); console.log(writeTotal/fileSize * 100); }); //读取完毕 rs.on("end", ()=>{ console.log("文件读取完毕"); //写入结束 ws.end(()=>{ console.log("文件写入完毕"); }); }); ``` - 管道拷贝大文件 ```javascript "use strict" const fs = require("fs"); let sourceFile ="xdy.avi"; let targetFile = "123.itcast"; let rs = fs.createReadStream(sourceFile); let ws = fs.createWriteStream(targetFile); rs.pipe(ws); ```