久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Nodejs文件操作和stream的示例分析

小編給大家分享一下Nodejs文件操作和stream的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站專注于秀英網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供秀英營銷型網(wǎng)站建設(shè),秀英網(wǎng)站制作、秀英網(wǎng)頁設(shè)計(jì)、秀英網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造秀英網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供秀英網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

NodeJS文件操作

  • NodeJS除了在網(wǎng)絡(luò)方面大放異彩,它還可以對文件進(jìn)行操作,按邏輯上來說只要我們合理運(yùn)用這些api再加上一些數(shù)據(jù)處理,我們就可以完成本地很多的操作。

  • 在上一篇我們知道如果想引用一個模塊則需要使用到require,而今天要介紹的主角是fs模塊,也就是NodeJS內(nèi)置的一個文件模塊,這個模塊有很多的API供我們使用。

創(chuàng)建目錄和文件

  • 我們可以使用fs.mkdir fs.writeFile來分別創(chuàng)建目錄和文件。

  • mkdir()可以接收三個參數(shù),第一個是路徑,第二個是個可選項(xiàng)代表權(quán)限,這個我們一般不需要,第三個參數(shù)是一個回調(diào)函數(shù),我們可以在這里面做一些處理。

/* learnNode.js */
let fs = require('fs');
fs.mkdir('js',(err)=>{
  if(err){
    console.log('出錯')
  }else{
    console.log('未出錯')
  }
})
  • writeFile()可以接收四個參數(shù),第一個是路徑,第二個是文件內(nèi)容,第三個可選項(xiàng)代表權(quán)限,第四個是回調(diào)函數(shù)。

/* learnNode.js */
let fs = require('fs');
fs.writeFile('./js/newJs.js','console.log("寫入這個")',(err)=>{
  if(err){
    console.log('出錯')
  }else{
    console.log('沒出錯')
  }
})

Nodejs文件操作和stream的示例分析

  • 可以看到我們成功創(chuàng)建了目錄并寫入了一個文件。

檢測文件

  • 我們可以通過fs.stat來檢測一個路徑的文件是為目錄還是文件,進(jìn)而可以做一些操作。

/* learnNode.js */
let fs = require('fs');
fs.stat('./js/newJs.js', (error, stats) => {
  if(error) {
    console.log(error);
    return false;
  } else {
    console.log(`是否文件:${stats.isFile()}`); 
    console.log(`是否目錄:${stats.isDirectory()}`); 
    return false;
  }
})
  • star()主要接收兩個參數(shù)第一個是要檢測的文件,第二個是一個回調(diào)函數(shù),這個回調(diào)函數(shù)有兩個參數(shù),分別是err錯誤和stats對象,這個對象提供有關(guān)文件的信息,我們可以對這個對象信息來進(jìn)行判斷。

Nodejs文件操作和stream的示例分析

刪除文件和刪除目錄

  • 既然我們可以使用NodeJS創(chuàng)建文件那當(dāng)然我們也可以刪除文件,主要使用的是fs.unlink``fs.rmdir這兩個API。

/* learnNode.js */
let fs = require('fs');
fs.unlink('./js/newJs.js', (err) => {
  if (err) throw err;
  console.log('文件已刪除');
});
fs.rmdir('./js',(err)=>{
  if (err) throw err;
  console.log('目錄已刪除');
})
  • 這兩個API都分別接收兩個參數(shù)是路徑和回調(diào)函數(shù),執(zhí)行node learnNode.js可以看到我們文件已經(jīng)成功刪除。

Nodejs文件操作和stream的示例分析

重命名

  • 我們可以使用fs.rename來對文件重命名。

/* learnNode.js */
let fs = require('fs');
fs.rename('oldJs.js','newJs.js',(err)=>{
  if(err){
    console.log('出錯')
  }else{
    console.log('未出錯')
  }
})
  • rename()可以接收三個參數(shù)第一個是路徑第二個是更改的名稱,第三個是回調(diào)函數(shù),值得注意的是,如果第一個參數(shù)和第二個參數(shù)對應(yīng)的文件所在的位置不一樣時,他不會重命名之前那個文件而是直接把文件剪切放到另一個地方。

/* learnNode.js */
let fs = require('fs');
fs.rename('newJs.js','./js/oldJs.js',(err)=>{
  if(err){
    console.log('出錯')
  }else{
    console.log('剪切到j(luò)s文件夾內(nèi)了')
  }
})

追加內(nèi)容

  • 上面我們說到創(chuàng)建文件的時候可以順便寫入東西,那么我們可不可以直接在文件追加文字呢?我們可以使用fs.appendFile

/* learnNode.js */
let fs = require('fs');
fs.appendFile('newJs.txt','我是追加的內(nèi)容',(err)=>{
  if(err){
    console.log('出錯')
  }else{
    console.log('追加內(nèi)容')
  }
})
  • appendFile()可以接收三個參數(shù),第一個是路徑,第二個是內(nèi)容,第三個是回調(diào)函數(shù),執(zhí)行node learnNode.js即可。

Nodejs文件操作和stream的示例分析

讀取文件和讀取目錄

  • 以上都是對文件進(jìn)行增刪改的操作,我們現(xiàn)在還需要掌握一下讀取內(nèi)容,我們可以使用fs.readFilefs.readdir分別讀取文件和讀取目錄。

/* learnNode.js */
let fs = require('fs');
fs.readFile('newJs.txt', (err, data) => {
  if(err) {
    console.log('出錯');
  } else {
    console.log("讀取文件成功!");
    console.log(data);
  }
})

Nodejs文件操作和stream的示例分析

/* learnNode.js */
let fs = require('fs');
fs.readdir('./', (err, data) => {
  if(err) {
    console.log('出錯');
  } else {
    console.log("讀取目錄成功!");
    console.log(data);
  }
})

Nodejs文件操作和stream的示例分析

  • 可以看到我們兩個API都是接收兩個參數(shù),第一個是路徑,第二個是回調(diào)函數(shù),這個回調(diào)函數(shù)也有兩個參數(shù)里面包含了data信息,我們可以打印這個data信息來獲取內(nèi)容。

stream(流)

  • 最后我們來簡單聊聊stream,翻譯過來就是的意思,提到流你會想到什么,河流,水流,都是從一個源頭到另一個源頭,就像水龍頭從開關(guān)到流到地面,stream也是這樣一個過程。

  • Stream 有四種流類型:

    • Readable- 可讀操作。

    • Writable- 可寫操作。

    • Duplex- 可讀可寫操作.

    • Transform- 操作被寫入數(shù)據(jù),然后讀出結(jié)果。

  • 在stream的過程中,我們也有事件可以使用,比如檢測到錯誤觸發(fā)的error,有數(shù)據(jù)時觸發(fā)的data。

    • data- 當(dāng)有數(shù)據(jù)可讀時觸發(fā)。

    • end- 沒有更多的數(shù)據(jù)可讀時觸發(fā)。

    • error- 在接收和寫入過程中發(fā)生錯誤時觸發(fā)。

    • finish- 所有數(shù)據(jù)已被寫入到底層系統(tǒng)時觸發(fā)。

  • 接下來簡單舉個例子理解一下吧。

讀取流

var fs = require("fs");
var data = '';
// 創(chuàng)建可讀流
var readerStream = fs.createReadStream('newJs.txt');
// 設(shè)置編碼為 utf8。
readerStream.setEncoding('UTF8');
// 處理流事件 遇到有數(shù)據(jù)時執(zhí)行這個
readerStream.on('data', function(chunk) {
  data += chunk;
  console.log(chunk,'流遇到數(shù)據(jù)了')
});
// 處理流事件 流結(jié)束時執(zhí)行這個
readerStream.on('end',function(){
  console.log(data,'流結(jié)束了');
});
 // 處理流事件 流報錯時執(zhí)行這個
readerStream.on('error', function(err){
  console.log(err.stack);
});
console.log("程序執(zhí)行完畢");
  • 我們一開始可以創(chuàng)建一個可讀流fs.createReadStream(),參數(shù)是你要讀的文件路徑。

  • 當(dāng)遇到了數(shù)據(jù)時會執(zhí)行readerStream.on('data',callback()),如下圖所示。

  • 當(dāng)流結(jié)束時會執(zhí)行readerStream.on('end',callback()),如下圖所示。

Nodejs文件操作和stream的示例分析

寫入流

  • 我們上面演示了如何通過流讀取一個文件,接下來我們試試通過流寫入文件。

var fs = require("fs");
var data = '我是小盧,我再寫入流';
// 創(chuàng)建一個可以寫入的流,寫入到文件 newJs.txt 中
var writerStream = fs.createWriteStream('newJs.txt');
// 使用 utf8 編碼寫入數(shù)據(jù)
writerStream.write(data,'UTF8');
// 標(biāo)記文件末尾
writerStream.end();
// 處理流事件 完成和報錯時執(zhí)行
writerStream.on('finish', function() {
    console.log("寫入完畢");
});
writerStream.on('error', function(err){
   console.log(err.stack);
});
console.log("程序執(zhí)行完畢");
  • 我們首先創(chuàng)建一個流,然后將data數(shù)據(jù)寫入newJs.txt文件中。

  • 當(dāng)流寫入完畢時會執(zhí)行readerStream.on('finish',callback()),如下圖所示。

Nodejs文件操作和stream的示例分析

  • 可以看到該newJs.txt文件中已經(jīng)存在了我們寫入的數(shù)據(jù)。

Nodejs文件操作和stream的示例分析

以上是“Nodejs文件操作和stream的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文題目:Nodejs文件操作和stream的示例分析
分享路徑:http://sd-ha.com/article34/jiscpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)頁設(shè)計(jì)公司、域名注冊、靜態(tài)網(wǎng)站、小程序開發(fā)、動態(tài)網(wǎng)站

廣告

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

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)