中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-08-28 12:39:27 來源:億速云 閱讀:227 作者:小新 欄目:web開發

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

NodeJS文件操作

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

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

創建目錄和文件

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

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

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

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

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

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

檢測文件

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

/* 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()主要接收兩個參數第一個是要檢測的文件,第二個是一個回調函數,這個回調函數有兩個參數,分別是err錯誤和stats對象,這個對象提供有關文件的信息,我們可以對這個對象信息來進行判斷。

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

刪除文件和刪除目錄

  • 既然我們可以使用NodeJS創建文件那當然我們也可以刪除文件,主要使用的是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都分別接收兩個參數是路徑和回調函數,執行node learnNode.js可以看到我們文件已經成功刪除。

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()可以接收三個參數第一個是路徑第二個是更改的名稱,第三個是回調函數,值得注意的是,如果第一個參數和第二個參數對應的文件所在的位置不一樣時,他不會重命名之前那個文件而是直接把文件剪切放到另一個地方。

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

追加內容

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

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

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

讀取文件和讀取目錄

  • 以上都是對文件進行增刪改的操作,我們現在還需要掌握一下讀取內容,我們可以使用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都是接收兩個參數,第一個是路徑,第二個是回調函數,這個回調函數也有兩個參數里面包含了data信息,我們可以打印這個data信息來獲取內容。

stream(流)

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

  • Stream 有四種流類型:

    • Readable - 可讀操作。

    • Writable - 可寫操作。

    • Duplex - 可讀可寫操作.

    • Transform - 操作被寫入數據,然后讀出結果。

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

    • data - 當有數據可讀時觸發。

    • end - 沒有更多的數據可讀時觸發。

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

    • finish - 所有數據已被寫入到底層系統時觸發。

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

讀取流

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

  • 當遇到了數據時會執行readerStream.on('data',callback()),如下圖所示。

  • 當流結束時會執行readerStream.on('end',callback()),如下圖所示。

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

寫入流

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

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

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

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

  • 可以看到該newJs.txt文件中已經存在了我們寫入的數據。

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

以上是“Nodejs文件操作和stream的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清新县| 和顺县| 阿拉善右旗| 镶黄旗| 临颍县| 嘉定区| 新龙县| 济南市| 伽师县| 聊城市| 会宁县| 桐梓县| 嘉义市| 句容市| 新密市| 济宁市| 安西县| 汽车| 红桥区| 肥西县| 天门市| 嘉善县| 巩义市| 绥化市| 乌海市| 新营市| 道孚县| 枝江市| 新干县| 博客| 普宁市| 古田县| 沙湾县| 许昌市| 万全县| 巫溪县| 永和县| 黑水县| 特克斯县| 来凤县| 凭祥市|