readfile,read,createReadStream函數


這三個函數使用前都需要引入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("程序執行完畢");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM