亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node文件操作匯總實例詳解

 更新時間:2022年10月18日 14:55:47   作者:SaraiNoQ  
這篇文章主要為大家介紹了Node文件操作匯總實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

前兩天我們介紹了 Nodejs 中 I/O 的重要組成部分:Buffer對象Stream流,今天我們介紹 Nodejs 的文件系統(tǒng),包括文件和目錄的讀寫、刪除,以及監(jiān)聽文件和目錄的修改。

文件系統(tǒng)

Nodejs 內置的 fs模塊 可與文件系統(tǒng)進行交互,封裝了常規(guī)的 POSIX函數。POSIX(Portable Operating System Interface,可移植操作系統(tǒng)接口)是UNIX系統(tǒng)的一個設計標準。fs模塊提供了多個操作目錄和文件的方法,大多會有同步和異步兩種版本。同步的方法名稱會以Sync為后綴。

目錄處理

fs模塊的 readdir() 方法可異步的讀取目錄內容。回調函數包含兩個參數,第一個是錯誤對象,第二個是一個包含文件名稱的數組,對應的同步方法是 readdirSync() 。在下面的示例中,當前目錄包含兩個文件,上一級目錄包含一個目錄名稱。

const fs = require('fs');
fs.readdir('./', (err, files) => {
  console.log(files);        //[ 'demo.txt', 'index.js' ]
});
fs.readdir('../', (err, files) => {
  console.log(files);        //[ '1' ]
});

其它處理目錄的方法還有 opendir()、mkdir() 等。

讀寫文件

在fs模塊中,可使用批量方法 readFile() 將文件內容一次性的加載到內存中,如下所示。

const fs = require('fs');
fs.readFile('./origin.txt', (err, buf) => {
  console.log(buf.toString());        //"hello Node.js"
});

對應的寫入方法是 writeFile() ,如下所示。

fs.writeFile('./target.txt', 'hello Node.js', (err) => {
  if (err) throw err;
  console.log('文件已被保存');
});

?? 文件路徑、寫入內容和回調函數是必傳的參數。如果文件不存在,那么會自動創(chuàng)建。

當文件很大時,該方法會因V8內存不足而出現問題。此時可以改用之前提到的流式方法 createReadStream(),分批次的讀取文件。

如下所示,每次只讀7個字節(jié)的內容。

const readable = fs.createReadStream('./origin.txt', {highWaterMark: 7});
readable.on("data", (chunk) => {
  /*************/
  /* "hello N"
  /* "ode.js"
  /************/
  console.log(chunk.toString());
});

通過管道方法 pipe()origin.txt 中的內容寫入到 target.txt 中,如下所示,對于不存在的文件,也會自動創(chuàng)建。

const writable = fs.createWriteStream('./target.txt');
readable.pipe(writable);

文件描述

fs模塊的 stat() 方法可讀取文件的描述信息,如下所示。

fs.stat('./demo.txt', (err, stats) => {
  console.log(stats);
});

回調函數中的stats參數是一個 fs.Stats對象 ,其屬性如下所示。它還包含一些判斷方法,例如isDirectory()、isFile()等。

Stats {
  dev: 195650,
  mode: 33206,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: undefined,
  ino: 36873221949682120,
  size: 13,
  blocks: undefined,
  atimeMs: 1586227933993.0217,
  mtimeMs: 1585882949091.0166,
  ctimeMs: 1586227933995.0222,
  birthtimeMs: 1586227933993.0217,
  atime: 2020-04-07T02:52:13.993Z,
  mtime: 2020-04-03T03:02:29.091Z,
  ctime: 2020-04-07T02:52:13.995Z,
  birthtime: 2020-04-07T02:52:13.993Z
}

fs模塊還提供了 fstat() 方法,在功能上與 stat() 等價,只是 fstat() 方法的第一個參數是文件描述符。在POSIX系統(tǒng)中,文件描述符是一個正整數,它實際上是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。當打開或創(chuàng)建一個文件時,就會被分配一個文件描述符。

在下面的示例中,open() 方法的回調函數中包含一個 fd參數(即文件描述符),搭配 fstat() 方法就能讀取文件信息:

fs.open('./demo.txt', 'r', (err, fd) => {
  fs.fstat(fd, (err, stats) => {
    console.log(stats);
  });
});

監(jiān)控文件

fs模塊提供了兩種方法來監(jiān)控文件:watch()watchFile() ,前者能監(jiān)控文件或目錄的更改,后者只能監(jiān)控文件的更改。

watch() 方法的監(jiān)聽器回調包含兩個參數,第一個是事件類型(包括rename和change),第二個是觸發(fā)事件的文件名稱,如下所示:

fs.watch('./demo.txt', (eventType, filename) => {
  console.log(eventType, filename);
});

執(zhí)行node命令后,每次更改demo.txt文件,就會在控制臺打印出下面這條語句。

$ node index.js
change demo.txt

雖然 watch() 方法的性能優(yōu)于 watchFile() 方法,但是 watch() 不是一個跨平臺的方法,其表現在各個平臺中并非百分百一致(例如filename參數不能保證提供),而 watchFile() 是跨平臺的。

異步文件

fs.promises 是 Nodejs 提供的一組備用的異步文件系統(tǒng)方法,它們會返回Promise對象而不是通過回調來處理結果。例如以Promise的方式使用 stat() 方法,如下所示。

const fsPromises = require('fs').promises;
fsPromises.stat('./demo.txt').then(stats => {
  console.log(stats);
});

刪除文件

Nodejs 中 fs模塊 提供了 unlink()rm() 兩個方法來刪除文件。下面的代碼實現了刪除當前文件夾下的 toBeDel.txt 文件:

const fs = require('fs');
fs.unlink('./toBeDel.txt', (err) => {
    if (!err) {
        console.log(err);
    }
});
// or
fs.rm('./toBeDel.txt', (err) => {
    if (!err) {
        console.log(err);
    }
})

如果要刪除文件夾,可以使用 rmdir() 方法,用法同 rm() 方法一樣。

?? rm() 同時支持刪除目錄和文件,而 unlink() 只能用于刪除文件。

總結

fs模塊 提供了大量對文件的操作的API,你無需去全部記住他們,只需像在學習 Linux 時簡單記住那些基礎的命令即可:

  • fs.stat 讀取文件的描述信息
  • fs.mkdir 創(chuàng)建目錄 (創(chuàng)建之前先判斷是否存在)
  • fs.writeFile 寫入文件(文件不存在就創(chuàng)建,但不能創(chuàng)建目錄)
  • fs.appendFile 寫入追加文件
  • fs.readFile 讀取文件
  • fs.readdir 讀取目錄
  • fs.rename 重命名
  • fs.rmdir 刪除目錄
  • fs.unlinkfs.rm 刪除文件

以上就是Node文件操作匯總實例詳解的詳細內容,更多關于Node文件操作匯總的資料請關注腳本之家其它相關文章!

相關文章

  • Sequelize中用group by進行分組聚合查詢

    Sequelize中用group by進行分組聚合查詢

    大家都知道在SQL查詢中,分組查詢是較常用的一種查詢方式。分組查詢是指通過GROUP BY關鍵字,將查詢結果按照一個或多個字段進行分組,分組時字段值相同的會被分為一組。在Node.js基于Sequelize的ORM框架中,同樣支持分組查詢,使用非常簡單方便。下面來看看詳細的介紹。
    2016-12-12
  • 最流行的Node.js精簡型和全棧型開發(fā)框架介紹

    最流行的Node.js精簡型和全棧型開發(fā)框架介紹

    這篇文章主要介紹了最流行的Node.js精簡型和全棧型開發(fā)框架介紹,本文講解了Express.js、KOA、Total.js、Sails.js、Meteor、Mean.IO等框架,需要的朋友可以參考下
    2015-02-02
  • nodejs npm install全局安裝和本地安裝的區(qū)別

    nodejs npm install全局安裝和本地安裝的區(qū)別

    這篇文章主要介紹了nodejs npm install 全局安裝和非全局安裝的區(qū)別,即帶參數-g和不帶參數-g安裝的區(qū)別,需要的朋友可以參考下
    2014-06-06
  • 詳解Nodejs get獲取遠程服務器接口數據

    詳解Nodejs get獲取遠程服務器接口數據

    這篇文章主要介紹了Nodejs get獲取遠程服務器接口數據,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Node.js學習之地址解析模塊URL的使用詳解

    Node.js學習之地址解析模塊URL的使用詳解

    url模塊是nodejs里面的一個簡單的模塊,下面這篇文章主要給大家介紹了關于Node.js學習之地址解析模塊URL使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • node實現簡單的增刪改查接口實例代碼

    node實現簡單的增刪改查接口實例代碼

    在本篇文章里小編給大家整理的是關于node實現簡單的增刪改查接口的相關實例內容,有需要的朋友們可以學習下。
    2019-08-08
  • node.js中fs\path\http模塊的使用方法詳解

    node.js中fs\path\http模塊的使用方法詳解

    Node.js是基于Chrome V8引擎的JavaScript的運行時(運行環(huán)境-宿主環(huán)境),下面這篇文章主要給大家介紹了關于node.js中fs\path\http模塊的使用方法,需要的朋友可以參考下
    2023-01-01
  • 淺談Node.js CVE-2017-14849 漏洞分析(詳細步驟)

    淺談Node.js CVE-2017-14849 漏洞分析(詳細步驟)

    這篇文章主要介紹了淺談Node.js CVE-2017-14849 漏洞分析(詳細步驟),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 基于NodeJS+MongoDB+AngularJS+Bootstrap開發(fā)書店案例分析

    基于NodeJS+MongoDB+AngularJS+Bootstrap開發(fā)書店案例分析

    這章的目的是為了把前面所學習的內容整合一下,這個示例完成一個簡單圖書管理模塊,因為中間需要使用到Bootstrap這里先介紹Bootstrap
    2017-01-01
  • NodeJS落地WebSocket實踐前端架構師破局技術

    NodeJS落地WebSocket實踐前端架構師破局技術

    這篇文章主要為大家介紹了NodeJS落地WebSocket實踐前端架構師破局技術,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論