這三個函數使用前都需要引入fs模塊(var fs= require(“fs”) )
readfile:讀取文件內容的異步函數,readFile方法是將要讀取的文件內容完整讀入緩存區,再從該緩存區中讀取文件內容
fs.readFile(filename, [encoding], [callback(err,data)])
最后一個參數為回調函數,回調函數的第一個參數包含了錯誤信息(error)
示例:
var fs = require("fs");
// 異步讀取
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("異步讀取: " + data.toString());
});
// 同步讀取
var data = fs.readFileSync('input.txt');
console.log("同步讀取: " + data.toString());
console.log("程序執行完畢。");
read:read或readSync方法讀取文件內容是不斷地將文件中的一小塊內容讀入緩存區,最后從該緩存區中讀取文件內容;以字節為單位來寫、讀
fs.read(fd, buffer, offset, length, position, callback)
參數
參數使用說明如下:
-
fd - 通過 fs.open() 方法返回的文件描述符。
-
buffer - 數據寫入的緩沖區。
-
offset - 緩沖區寫入的寫入偏移量。
-
length - 要從文件中讀取的字節數。
-
position - 文件讀取的起始位置,如果 position 的值為 null,則會從當前文件指針的位置讀取。
-
callback - 回調函數,有三個參數err, bytesRead, buffer,err 為錯誤信息, bytesRead 表示讀取的字節數,buffer 為緩沖區對象。
示例:
var fs = require("fs");
var buf = new Buffer(1024);
console.log("准備打開已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("文件打開成功!");
console.log("准備讀取文件:");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字節被讀取");
// 僅輸出讀取的字節
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
});
createReadStream:從流中讀取數據,該方法創建一個將文件內容讀取為流數據的ReadStream對象
示例:
var fs = require("fs");
var data = '';
// 創建可讀流
var readerStream = fs.createReadStream('input.txt');
// 設置編碼為 utf8。
readerStream.setEncoding('UTF8');
// 處理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {
data += chunk;
});
readerStream.on('end',function(){
console.log(data);
});
readerStream.on('error', function(err){
console.log(err.stack);
});
console.log("程序執行完畢");