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); ```