node.js中的fs.write方法使用說明
方法說明:
寫入文件(根據(jù)文件描述符),功能與 fs.writeFile() 類似,但該方法提供更底層的操作,實際應(yīng)用中建議使用多 fs.writeFile() 。
該方法有兩種形式:
1、fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)])
這種寫法將buffer寫入文件(根據(jù)文件描述符fd來查找文件)。
2、fs.write(fd, data[, position[, encoding]], [callback(err, written, string)])
這種寫法將數(shù)據(jù)data寫入文件(根據(jù)文件描述符fd來查找文件)。如果數(shù)據(jù)不是一個緩沖區(qū)的實例值將被強制轉(zhuǎn)換為一個字符串。
語法:
fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)])
fs.write(fd, data[, position[, encoding]], [callback(err, written, string)])
由于該方法屬于fs模塊,使用前需要引入fs模塊(var fs= require(“fs”) )
接收參數(shù):
fd 文件描述符。
buffer 緩沖區(qū),數(shù)據(jù)將被寫入。buffer尺寸的大小設(shè)置最好是8的倍數(shù),效率較高。
offset buffer寫入的偏移量
length (integer) 指定文件讀取字節(jié)數(shù)長度
position (integer) 指定文件讀取的起始位置,如果該項為null,將從當前文件指針的位置開始讀取數(shù)據(jù)。
callback 回調(diào)傳遞了三個參數(shù),err, bytesRead, buffer
· err 異常
· bytesRead:讀取的字節(jié)數(shù)
· buffer:緩沖區(qū)對象
第二種形式:
encoding 字符編碼
callback
· err 異常
· written 指定多少字符數(shù)將被寫入到文件。
· string 返回的Buffer
例子:
//fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)])
//執(zhí)行結(jié)果:bytesWritten = 8 , buffer = <Buffer 00 00 00 01 00 00 00 00>
var fs = require('fs');
fs.open('content.txt', 'a', function(err,fd){
if(err){
throw err;
}
var data = '123123123 hello world';
var buf = new Buffer(8);
fs.write(fd, buf, 0, 8, 0, function(err, bytesWritten, buffer){
if(err){
throw err;
}
console.log(bytesWritten);
console.log(buffer);
fs.close(fd,function(err){
if(err){
throw err;
}
console.log('file closed');
})
})
})
//fs.write(fd, data[, position[, encoding]], [callback(err, written, string)])
//執(zhí)行結(jié)果:written = 21 , string = <Buffer 31 32 33 31 32 33 31 32 33 20 68 65 6c 6c 6f 20 77 bf 72 6c 64>
var fs = require('fs');
fs.open('content.txt', 'a', function(err,fd){
if(err){
throw err;
}
var data = '123123123 hello world';
fs.write(fd, data, 0 , 'utf-8', function(err, written, string){
if(err){
throw err;
}
console.log(written);
console.log(string);
fs.close(fd,function(err){
if(err){
throw err;
}
console.log('file closed');
})
})
})
源碼:
// usage:
// fs.write(fd, buffer, offset, length[, position], callback);
// OR
// fs.write(fd, string[, position[, encoding]], callback);
fs.write = function(fd, buffer, offset, length, position, callback) {
if (util.isBuffer(buffer)) {
// if no position is passed then assume null
if (util.isFunction(position)) {
callback = position;
position = null;
}
callback = maybeCallback(callback);
var wrapper = function(err, written) {
// Retain a reference to buffer so that it can't be GC'ed too soon.
callback(err, written || 0, buffer);
};
return binding.writeBuffer(fd, buffer, offset, length, position, wrapper);
}
if (util.isString(buffer))
buffer += '';
if (!util.isFunction(position)) {
if (util.isFunction(offset)) {
position = offset;
offset = null;
} else {
position = length;
}
length = 'utf8';
}
callback = maybeCallback(position);
position = function(err, written) {
// retain reference to string in case it's external
callback(err, written || 0, buffer);
};
return binding.writeString(fd, buffer, offset, length, position);
};
相關(guān)文章
開發(fā)Node CLI構(gòu)建微信小程序腳手架的示例
這篇文章主要介紹了開發(fā)Node CLI構(gòu)建微信小程序腳手架,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-03-03Node.js利用js-xlsx處理Excel文件的方法詳解
這篇文章主要給大家介紹了關(guān)于Node.js利用js-xlsx處理Excel文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習價值,需要的朋友們下面來一起看看吧。2017-07-07node.js開發(fā)中使用Node Supervisor實現(xiàn)監(jiān)測文件修改并自動重啟應(yīng)用
這篇文章主要介紹了node.js開發(fā)中使用Node Supervisor實現(xiàn)監(jiān)測文件修改并自動重啟應(yīng)用的功能,從而避免大量重復(fù)的CTRL+C終止程序動作,需要的朋友可以參考下2014-11-11Nodejs?Socket連接池及TCP?HTTP網(wǎng)絡(luò)模型詳解
這篇文章主要為大家介紹了Nodejs?Socket連接池及TCP?HTTP網(wǎng)絡(luò)模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08Nodejs中的計時器(setTimeout?setIntervals?etImmediate)使用案例解析
這篇文章主要介紹了Nodejs中的計時器(setTimeout?setIntervals?etImmediate)使用案例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06