欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Node.js初識fs模塊

fs 模塊是文件操作的封裝,它提供了文件的讀取、寫入、更名、刪除、遍歷目錄、鏈接等 Unix 文件系統(tǒng)操作。與其他模塊不同的是,fs 模塊中所有的操作都提供了同步異步 兩個版本,比如讀取文件內(nèi)容的函數(shù)有 異步的 fs.readFile() 和 同步的 fs.readFileSync().

為連城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及連城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、連城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Node.js 導(dǎo)入文件系統(tǒng)模塊的語法如下:

var fs = require('fs');

1、異步和同步讀取文件

fs.readFile(file[, options], callback(err,data))

異步讀取文件的全部內(nèi)容

參數(shù):

file:  <String> | <Buffer> | <Integer>,要讀取的文件名,必選參數(shù)       

options:  <Object> | <String>, 可選參數(shù),可指定 flag(文件操作選項,如 r+ 讀寫;w+讀寫,文 件不存在則創(chuàng)建)及 encoding 屬性

        encoding:  <String> | <Null>,表示文件的字符編碼

        flag: <String>  ,默認 'r' 

callback: <Function>,回調(diào)函數(shù)提供了兩個參數(shù) err 和 data,err 表示有沒有錯誤發(fā)生,data 是文件內(nèi)容

如果指定了第二個參數(shù) encoding,回調(diào)函數(shù)中的 data 是一個解析后的字符串,否則 data 將會是以 Buffer 形式表示的二進制數(shù)據(jù)

新建一個 content.txt,里面添加一行簡單的文本

你好,世界!

異步讀取文件,示例代碼如下:

var fs = require('fs');

fs.readFile('./content.txt', {flag: 'r+', encoding: 'utf8'}, function(err, data){
    if(err){
        console.error(err);
        return;
    }
    console.log('異步讀取:'+ data);
});

運行結(jié)果如下:

Node.js 初識 fs 模塊

當(dāng)讀取文件出現(xiàn)錯誤時,err 將會是 Error 對象。例如:讀取一個不存在的 content1.txt 文件,運行代碼時,會報如下錯誤。

Node.js 初識 fs 模塊

Node.js 的異步編程接口習(xí)慣是以函數(shù)的最后一個參數(shù)為回調(diào)函數(shù),通常一個函數(shù)只有一個回調(diào)函數(shù)。回調(diào)函數(shù)的實際參數(shù)中第一個是 err,其余參數(shù)是其他返回內(nèi)容。如果沒有發(fā)生錯誤,err 的值會是 null 或 undefined。如果有錯誤發(fā)生,err 通常是 Error 對象的實例

fs.readFileSync(file[, options])

 fs.readFile 的同步版本,返回文件的內(nèi)容

它接受的參數(shù)和 fs.readFile 相同,而讀取到的文件內(nèi)容會以函數(shù)返回值的形式返回。如果有錯誤發(fā)生,fs 將會拋出異常,需要使用 try 和 catch 捕捉并處理異常。

與同步 I/O 函數(shù)不同,Node.js 中異步函數(shù)大多沒有返回值

同步讀取文件示例:

var fs = require('fs');

//同步讀取
var data = fs.readFileSync('./content.txt','utf8');
console.log('同步讀取:'+ data);
console.log('程序執(zhí)行完畢!');

運行結(jié)果:

Node.js 初識 fs 模塊

2、獲取文件信息

fs.stat(path, callback)

通過異步模式獲取文件信息

參數(shù):

path: <String> | <Buffer>,文件的路徑

callback: <Function>,回調(diào)函數(shù),帶有兩個參數(shù) err 和 status,stats 是 fs.Stats  對象

fs.stat() 執(zhí)行后,會將 stats 類的實例返回給其回掉函數(shù)。可以通過 stats 類中提供的方法判斷文件的相關(guān)屬性,例如:判斷是否為文件夾

var fs = require('fs');

fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
    console.log(stats.isFile());      //true
})

stats 類中的方法有:

Node.js 初識 fs 模塊

新建一個 js 文件,代碼如下:

var fs = require('fs');

console.log('準備打開文件!');

fs.stat('./content.txt', function(err, stats){
    if(err){
        console.err(error);
    }
    console.log(stats);
    console.log('讀取信息成功!');

    //檢測文件類型
    console.log('是否為文件(isFile)?'+ stats.isFile());
    console.log('是否為目錄(isDirectory)?'+ stats.isDirectory());
})

運行結(jié)果:

Node.js 初識 fs 模塊


3、寫入文件


fs.writeFile(file, data[, options], callback)

異步的方式把數(shù)據(jù)寫入文件,如果文件存在,該方法寫入的內(nèi)容會覆蓋舊的文件內(nèi)容

參數(shù):

file:  <String> | <Buffer> | <Integer>,要讀取的文件名,必選參數(shù)       

data:  <String> | <Buffer> ,要寫入的數(shù)據(jù),可以是  <String>  也可以是  <Buffer> (對象流)

options:  <Object> | <String>, 

        encoding:  <String> | <Null>,表示文件的字符編碼,默認'utf8'

        mode: <Integer> ,權(quán)限,默認 0o666 

        flag: <String>  ,默認 'w' 

callback: <Function>,回調(diào)函數(shù)只包含錯誤信息參數(shù)(err),在寫入失敗時返回

如果 data 是一個 <Buffer> ,那么 option 中的 encoding 會被忽略掉,將默認為 'utf8'


示例代碼:

var fs = require('fs');

console.log('準備寫入文件!');

fs.writeFile('./content.txt', '我是異步寫入的文件內(nèi)容', function(err){
    if(err){
        console.err(error);
    }
    console.log('數(shù)據(jù)寫入成功!');
    console.log('--------------我是分割線---------------');
    console.log('讀取寫入的數(shù)據(jù)!');
    fs.readFile('./content.txt', function(err, data){
        if(err){
            console.err(error);
        }
        console.log('異步讀取文件數(shù)據(jù):' +data);

    })
})

運行結(jié)果:

Node.js 初識 fs 模塊

同時,原來的 content.txt 中的內(nèi)容變?yōu)椋?/p>

Node.js 初識 fs 模塊

fs.appendFile(file, data[, options], callback)

以追加的方式寫入文件

示例代碼:

var fs = require('fs');

fs.appendFile('./content.txt', '我是被追加寫入的數(shù)據(jù)', function(err){
    if(err){
        console.log(error);
    }
});

fs.readFile('./content.txt', function(err, data){
    if(err){
        console.log(error);
    }
    console.log('異步讀取文件數(shù)據(jù):' +data);
})

運行結(jié)果:(在原數(shù)據(jù)后追加數(shù)據(jù),不會覆蓋原內(nèi)容)

Node.js 初識 fs 模塊

4、讀取文件

fs.read(fd, buffer, offset, length, position, callback(err, bytesRead, buffer))

從指定的文件描述符 fd 中讀取數(shù)據(jù)并寫入 buffer 指向的緩沖區(qū)對象

參數(shù):

fd :  <Integer>,使用 fs.open 打開成功后返回的文件描述符

buffer : <String> | <Buffer> ,一個 buffer 對象,V8引擎分配的一段內(nèi)存

offset : <Integer> ,整數(shù),向緩存區(qū)中寫入時的初識位置,以字節(jié)為單位

length : <Integer> ,整數(shù),讀取文件的長度

position : <Integer> ,整數(shù),讀取文件的初識位置;文件大小以字節(jié)為單位

如果 position  為 null,將從當(dāng)前文件指針的位置讀取

callback : <Function> ,讀取執(zhí)行完成后的回調(diào)函數(shù),有三個參數(shù) err, bytesRead, buffer

     - err:錯誤信息

     - bytesRead:表示讀取的字節(jié)數(shù)

     - buffer:緩沖區(qū)對象

示例代碼如下:

var fs = require('fs');

var buf = new Buffer(1024);

console.log('準備打開已存在的文件!');
fs.open('./content.txt', 'r+', function(err, fd){
    if(err){
        console.error(err);
    }
    console.log('文件打開成功!');
    console.log('準備讀取文件:');
    fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
        if(err){
            console.error(err);
        }
        //每一個漢字utf8編碼是3個字節(jié)
        console.log(bytes+ '字節(jié)被讀取');

        //僅輸出讀取的字節(jié)
        if(bytes >0){
            console.log(buf.slice(0, bytes));
        }
    })
});

運行結(jié)果:

Node.js 初識 fs 模塊

5、打開文件

fs.open(path, flags[, mode], callback(err, fd))

異步的方式打開文件

path: <String> | <Buffer>,文件的路徑

flags: <String> | <Number>,文件打開的行為,具體參考下表

mode: <Integer>,設(shè)置文件模式(權(quán)限),文件創(chuàng)建默認權(quán)限為 0666(可讀,可寫)

callback: <Function>,回調(diào)函數(shù),帶有兩個參數(shù) err 和 fd

flags 參數(shù)可以是以下值:

Node.js 初識 fs 模塊

示例代碼:以讀寫模式打開文件 content.txt

var fs = require('fs');

//異步打開文件
console.log('準備打開文件!');
fs.open('./content.txt','r+',function(err, fd){
    if(err){
        return console.error(err);
    }
    console.log('文件打開成功!');
});

運行結(jié)果:

Node.js 初識 fs 模塊

fs.openSync(path, flags[, mode])

 fs.open() 的同步版本,返回一個  <Integer> 代表讀取的文件

6、創(chuàng)建目錄

fs.mkdir(path[, mode], callback(err))

創(chuàng)建目錄

參數(shù):

path : <String> | <Buffer> ,被創(chuàng)建目錄的完整路徑及目錄名

[mode] : <Integer> ,整數(shù),目錄權(quán)限,默認 0777

callback : <Function> ,創(chuàng)建完目錄回調(diào)函數(shù),err 錯誤對象


示例代碼:

var fs = require('fs');

console.log('創(chuàng)建目錄 /src/test');

fs.mkdir('src/test', function(err){
    if(err){
        console.error(err);
    }
    console.log('目錄創(chuàng)建成功!');
});

創(chuàng)建前截圖:

Node.js 初識 fs 模塊

創(chuàng)建后截圖:

Node.js 初識 fs 模塊

本文標(biāo)題:Node.js初識fs模塊
分享地址:http://www.chinadenli.net/article18/jdhpgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計虛擬主機Google網(wǎng)站制作ChatGPT搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司