文章出處

node的文件讀取主要分為同步讀取、異步讀取,常用API有fs.readFile、fs.readFileSync。還有諸如更底層的fs.read,以及數據流(stream),后面再總結下咯~

直接上簡單的demo,看下同步/異步接口的調用時的區別,以及分別對應的異常處理方式。

至于API說明,可參考node官方文檔

/**
 * 文件讀取demo,by 程序猿小卡
 */
var fs = require('fs');

/** 文件同步讀取 */

// 沒有聲明encoding,所以返回的是buffer(二進制數據)
var bufferStr = fs.readFileSync('test.txt');
console.log(bufferStr);  // 輸出 <Buffer 68 65 6c 6c 6f 0a>

// 聲明了encoding,所以返回的是普通字符串
var str = fs.readFileSync('test.txt', {
    encoding: 'utf-8'
});
console.log(str);  // 輸出 hello

// 文件讀取異常處理:通過try、catch
try{
    var errStr = fs.readFileSync('noneExist.txt');
}catch(err){
    console.log(err.message);  // 輸出 ENOENT, no such file or directory 'noneExist.txt'
}


/** 文件異步讀取 */

// 無聲明encoding
fs.readFile('test.txt', function(err, data){
    if(err){
        console.log('文件讀取失敗');
    }else{
        console.log(data);  // 輸出 <Buffer 68 65 6c 6c 6f 0a>
    }
});

// 聲明了encoding
fs.readFile('test.txt', {encoding: 'utf-8'}, function(err, data){
    if(err){
        console.log('文件讀取失敗');
    }else{
        console.log(data);  // 輸出 hello
    }
});

// 異常處理
fs.readFile('noneExist.txt', {encoding: 'utf-8'}, function(err, data){
    if(err){
        console.log('文件讀取失敗');  // 輸出 文件讀取失敗
    }else{
        console.log(data);
    }
});

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()