目錄
一,buffer(緩沖區)
二,同步檔案寫入
三,異步檔案寫入
四,簡單檔案寫入
一,buffer(緩沖區)
/**
* Buffer(緩沖區)
* buffer的結構和陣列很像,操作的方法也和陣列類似
* 陣列中不能存盤二進制的檔案,而buffer就是專門用來存盤二進制資料
* 在buffer中存盤的都是二進制資料,但是在顯示時都是以16進制的形式顯示
* buffer中每一個元素的范圍是從00 - ff 0 - 25
*
* 計算機一個0 或一個1 我們稱之為1位(bit) 8bit = 1byte(位元組)
* buffer中的一個元素,占用記憶體的一個位元組
* buffer的大小一旦確定,則不能修改,buffer實際上是對底層記憶體的直接操作
*/
var str = "Hello Atguigu";
//將一個字串保存到buffer中
var buf = Buffer.from(str);
// console.log(buf.length);//占用記憶體的大小
// console.log(str.length);//字串的長度
// console.log(buf);
// 創建一個指定大小的buffer
// butter建構式都是不推薦使用的
// var buf2 = new Buffer(10);//10個位元組的buffer
// console.log(buf2.length);
// 創建一個10個位元組的buffer
var buf2 = Buffer.alloc(10);
console.log(buf2.length);
// buffer.allocUnsafe(size) //創建一個指定大小的buffer,但是buffer中可能含有敏感資料,
// Buffer.from(str) 將一個字串轉換為buffer
// Buffer.alloc(size) 創建一個指定大小的buffer
// Buffer.allocUnsafe(size) 創建一個指定大小的buffer,但是可能含有敏感資料,
// buf.toString() 將緩沖區中的資料轉換為字串
二,同步檔案寫入
/*
檔案系統(File System)
- 檔案系統簡單來說就是通過Node來作業系統中的檔案
- 使用檔案系統,需要先引入fs模塊,fs是核心模塊,直接引入不需要下載
同步檔案的寫入
- 手動操作的步驟
1.打開檔案
fs.openSync(path[, flags[, mode]])
path 要打開檔案的路徑
flags 打開檔案要做的操作的型別 r 只讀的 w 可寫的
mode 設定檔案的操作權限,一般不傳
回傳值:
該方法會回傳一個檔案的描述符作為結果,我們可以通過該描述符來對檔案進行各種操作
2.向檔案中寫入內容
fs.writeSync(fd, string[, position[, encoding]])
fd 檔案的描述符,需要傳遞要寫入的檔案的描述符
string 要寫入的內容
position 寫入的起始位置
encoding 寫入的編碼,默認utf-8
3.保存并關閉檔案
fs.closeSync(fd)
fd 要關閉的檔案的描述符
*/
var fs = require("fs");
// 打開檔案
var fd = fs.openSync("hello.txt","w");
console.log(fd);
// 向檔案中寫入內容
fs.writeSync(fd,"今天天氣真不錯~~~");
// 關閉檔案
fs.closeSync(fd);
三,異步檔案寫入
/*
異步檔案寫入
打開檔案
fs.open(path[, flags[, mode]], callback)
用來打開一個檔案
異步呼叫的方法,結果都是通過回呼函式的引數回傳的
回呼函式兩個引數
err 錯誤物件,如果沒有錯誤則為null
fd 檔案的描述符
異步寫入檔案
fs.write(fd, string[, position[, encoding]], callback)
關閉檔案
fs.close(fd[, callback])
*/
// 引入fs模塊
var fs = require("fs");
// 打開檔案
fs.open("hello2.txt","w",function(err,fd){
// 判斷是否出錯
if(!err){
// 如果沒有出錯,則對檔案進行寫入操作
fs.write(fd,"這是異步寫入的內容",function(err){
if(!err){
console.log("寫入成功");
}
// 關閉檔案
fs.close(fd,function(err){
if(!err){
console.log("檔案已關閉~~~");
}
});
});
}else{
console.log(err);
}
});
四,簡單檔案寫入
/*
簡單檔案寫入
fs.writeFile(file, data[, options], callback)
fs.writeFileSync(file, data[, options])
file 要操作的檔案的路徑
data 要寫入的資料
options 選項,可以對寫入進行一些設定
callback 當寫入完成以后執行的函式
flag
r 只讀
w 可寫
a 追加
*/
// 引入fs模塊
var fs = require("fs");
fs.writeFile("hello.txt","這是通過writeFile寫入的內容",function(err){
if(!err){
console.log(寫入成功);
}
});
// C:\Users\wujincai\Desktop 獲取桌面檔案寫入
var fs = require("fs");
fs.writeFile("C:/Users/wujincai/Desktop/hello.txt","這是通過writeFile寫入的內容",function(err){
if(!err){
console.log(寫入成功);
}
});
五,流式檔案寫入
/*
同步,異步,簡單檔案的寫入都不適合大檔案的寫入,性能較差,容易導致記憶體溢位,
*/
var fs = require("fs");
// 流式檔案寫入
// 創建一個可寫流
/*
fs.createWriteStream(path[, options])
可以用來創建一個可寫流
path 檔案路徑
options 配置的引數
*/
var ws = fs.createWriteStream("hello3.txt");
// 可以通過監聽流的open和close事件來監聽流的打開和關閉
/*
on(事件字串,回呼函式)
可以為物件系結一個事件
once(事件字串,回呼函式)
可以為物件系結一個一次性的事件,該事件將會在觸發一次以后自動失效
*/
ws.once("open",function(){
console.log("流打開了~~");
});
ws.once("close",function(){
console.log("流關閉了~~");
})
// 通過ws向檔案中輸入內容
ws.write("通過可寫流寫入檔案的內容;");
ws.write("天氣好");
ws.write("真不錯");
//關閉流
ws.end();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/340769.html
標籤:其他
上一篇:起搏器集群中的監聽器oracle
下一篇:作用域和作用域鏈
