欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node里的filesystem模塊文件讀寫操作詳解

 更新時間:2022年09月30日 10:21:37   作者:別救了這猴子廢了  
這篇文章主要為大家介紹了node里的filesystem模塊文件讀寫操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、是什么

fs(filesystem),該模塊提供本地文件的讀寫能力,基本上是POSIX文件操作命令的簡單包裝

可以說,所有與文件的操作都是通過fs核心模塊實現(xiàn)

導入模塊如下:

const fs = require('fs');

這個模塊對所有文件系統(tǒng)操作提供異步(不具有sync 后綴)和同步(具有 sync 后綴)兩種操作方式,而供開發(fā)者選擇

二、文件知識

在計算機中有關于文件的知識:

  • 權限位 mode
  • 標識位 flag
  • 文件描述為 fd

權限位 mode

針對文件所有者、文件所屬組、其他用戶進行權限分配,其中類型又分成讀、寫和執(zhí)行,具備權限位4、2、1,不具備權限為0

如在linux查看文件權限位:

drwxr-xr-x?1?PandaShen?197121?0?Jun 28 14:41?core
-rw-r--r--?1?PandaShen?197121?293?Jun 23 17:44?index.md

在開頭前十位中,d為文件夾,-為文件,后九位就代表當前用戶、用戶所屬組和其他用戶的權限位,按每三位劃分,分別代表讀(r)、寫(w)和執(zhí)行(x),- 代表沒有當前位對應的權限

標識位

標識位代表著對文件的操作方式,如可讀、可寫、即可讀又可寫等等,如下表所示:

符號含義
r讀取文件,如果文件不存在則拋出異常。
r+讀取并寫入文件,如果文件不存在則拋出異常。
rs讀取并寫入文件,指示操作系統(tǒng)繞開本地文件系統(tǒng)緩存。
w寫入文件,文件不存在會被創(chuàng)建,存在則清空后寫入。
wx寫入文件,排它方式打開。
w+讀取并寫入文件,文件不存在則創(chuàng)建文件,存在則清空后寫入。
wx+和 w+ 類似,排他方式打開。
a追加寫入,文件不存在則創(chuàng)建文件。
ax與 a 類似,排他方式打開。
a+讀取并追加寫入,不存在則創(chuàng)建。
ax+與 a+ 類似,排他方式打開。

文件描述為 fd

操作系統(tǒng)會為每個打開的文件分配一個名為文件描述符的數(shù)值標識,文件操作使用這些文件描述符來識別與追蹤每個特定的文件

Window系統(tǒng)使用了一個不同但概念類似的機制來追蹤資源,為方便用戶,NodeJS抽象了不同操作系統(tǒng)間的差異,為所有打開的文件分配了數(shù)值的文件描述符

在 NodeJS中,每操作一個文件,文件描述符是遞增的,文件描述符一般從 3 開始,因為前面有 0、1、2三個比較特殊的描述符,分別代表 process.stdin(標準輸入)、process.stdout(標準輸出)和 process.stderr(錯誤輸出)

三、方法

下面針對fs模塊常用的方法進行展開:

  • 文件讀取
  • 文件寫入
  • 文件追加寫入
  • 文件拷貝
  • 創(chuàng)建目錄

文件讀取

fs.readFileSync

同步讀取,參數(shù)如下:

  • 第一個參數(shù)為讀取文件的路徑或文件描述符
  • 第二個參數(shù)為 options,默認值為 null,其中有 encoding(編碼,默認為 null)和 flag(標識位,默認為 r),也可直接傳入 encoding

結果為返回文件的內(nèi)容

const fs = require("fs");
let buf = fs.readFileSync("1.txt");
let data = fs.readFileSync("1.txt", "utf8");
console.log(buf); // <Buffer 48 65 6c 6c 6f>
console.log(data); // Hello

fs.readFile

異步讀取方法 readFile 與 readFileSync 的前兩個參數(shù)相同,最后一個參數(shù)為回調函數(shù),函數(shù)內(nèi)有兩個參數(shù) err(錯誤)和 data(數(shù)據(jù)),該方法沒有返回值,回調函數(shù)在讀取文件成功后執(zhí)行

const fs = require("fs");
fs.readFile("1.txt", "utf8", (err, data) => {
   if(!err){
       console.log(data); // Hello
   }
});

文件寫入

writeFileSync

同步寫入,有三個參數(shù):

  • 第一個參數(shù)為寫入文件的路徑或文件描述符
  • 第二個參數(shù)為寫入的數(shù)據(jù),類型為 String 或 Buffer
  • 第三個參數(shù)為 options,默認值為 null,其中有 encoding(編碼,默認為 utf8)、 flag(標識位,默認為 w)和 mode(權限位,默認為 0o666),也可直接傳入 encoding
const fs = require("fs");
fs.writeFileSync("2.txt", "Hello world");
let data = fs.readFileSync("2.txt", "utf8");
console.log(data); // Hello world

writeFile

異步寫入,writeFile 與 writeFileSync 的前三個參數(shù)相同,最后一個參數(shù)為回調函數(shù),函數(shù)內(nèi)有一個參數(shù) err(錯誤),回調函數(shù)在文件寫入數(shù)據(jù)成功后執(zhí)行

const fs = require("fs");
fs.writeFile("2.txt", "Hello world", err => {
    if (!err) {
        fs.readFile("2.txt", "utf8", (err, data) => {
            console.log(data); // Hello world
        });
    }
});

文件追加寫入

appendFileSync

參數(shù)如下:

  • 第一個參數(shù)為寫入文件的路徑或文件描述符
  • 第二個參數(shù)為寫入的數(shù)據(jù),類型為 String 或 Buffer
  • 第三個參數(shù)為 options,默認值為 null,其中有 encoding(編碼,默認為 utf8)、 flag(標識位,默認為 a)和 mode(權限位,默認為 0o666),也可直接傳入 encoding
const fs = require("fs");
fs.appendFileSync("3.txt", " world");
let data = fs.readFileSync("3.txt", "utf8");

appendFile

異步追加寫入方法 appendFile 與 appendFileSync 的前三個參數(shù)相同,最后一個參數(shù)為回調函數(shù),函數(shù)內(nèi)有一個參數(shù) err(錯誤),回調函數(shù)在文件追加寫入數(shù)據(jù)成功后執(zhí)行

const fs = require("fs");
fs.appendFile("3.txt", " world", err => {
    if (!err) {
        fs.readFile("3.txt", "utf8", (err, data) => {
            console.log(data); // Hello world
        });
    }
});

文件拷貝

copyFileSync

同步拷貝

const fs = require("fs");
fs.copyFileSync("3.txt", "4.txt");
let data = fs.readFileSync("4.txt", "utf8");
console.log(data); // Hello world

copyFile

異步拷貝

const fs = require("fs");
fs.copyFile("3.txt", "4.txt", () => {
    fs.readFile("4.txt", "utf8", (err, data) => {
        console.log(data); // Hello world
    });
});

創(chuàng)建目錄

mkdirSync

同步創(chuàng)建,參數(shù)為一個目錄的路徑,沒有返回值,在創(chuàng)建目錄的過程中,必須保證傳入的路徑前面的文件目錄都存在,否則會拋出異常

// 假設已經(jīng)有了 a 文件夾和 a 下的 b 文件夾
fs.mkdirSync("a/b/c")

mkdir

異步創(chuàng)建,第二個參數(shù)為回調函數(shù)

fs.mkdir("a/b/c", err => {
    if (!err) console.log("創(chuàng)建成功");
});

以上就是node里的filesystem模塊文件讀寫操作詳解的詳細內(nèi)容,更多關于node filesystem文件讀寫操作的資料請關注腳本之家其它相關文章!

相關文章

  • node.js中的fs.appendFile方法使用說明

    node.js中的fs.appendFile方法使用說明

    這篇文章主要介紹了node.js中的fs.appendFile方法使用說明,本文介紹了fs.appendFile方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 利用nodeJs anywhere搭建本地服務器環(huán)境的方法

    利用nodeJs anywhere搭建本地服務器環(huán)境的方法

    今天小編就為大家分享一篇利用nodeJs anywhere搭建本地服務器環(huán)境的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • node使用async_hooks模塊進行請求追蹤

    node使用async_hooks模塊進行請求追蹤

    這篇文章主要介紹了node使用async_hooks模塊進行請求追蹤,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • nodejs和php實現(xiàn)圖片訪問實時處理

    nodejs和php實現(xiàn)圖片訪問實時處理

    這篇文章主要為大家詳細介紹了nodejs和php分別實現(xiàn)圖片訪問實時處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • NodeJS實現(xiàn)圖片文本分割

    NodeJS實現(xiàn)圖片文本分割

    這篇文章主要為大家詳細介紹了NodeJS實現(xiàn)圖片文本分割,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • NodeJs項目中關閉ESLint的方法

    NodeJs項目中關閉ESLint的方法

    ESLint是一個用來識別 ECMAScript 并且按照規(guī)則給出報告的代碼檢測工具,使用它可以避免低級錯誤和統(tǒng)一代碼的風格。這篇文章主要介紹了NodeJs項目中關閉ESLint的方法,需要的朋友可以參考下
    2018-08-08
  • Node.js學習教程之Module模塊

    Node.js學習教程之Module模塊

    這篇文章主要給大家介紹了關于Node.js學習教程之Module模塊的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Node.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Node.js使用SQLite數(shù)據(jù)庫方法大全

    Node.js使用SQLite數(shù)據(jù)庫方法大全

    Node.js是一種流行的JavaScript運行時,提供了許多有用的模塊和庫來構建Web應用程序,而SQLite是一種嵌入式關系型數(shù)據(jù)庫,它可以運行在各種操作系統(tǒng)上,包括Windows、Linux和Mac OS X等,在Node.js中,可以通過安裝sqlite3模塊來訪問SQLite數(shù)據(jù)庫
    2023-10-10
  • 利用Node.js對文件進行重命名

    利用Node.js對文件進行重命名

    最近工作中遇到了對文件進行重命名的需求,后通過node.js實現(xiàn)了,所以下面這篇文章主要給大家介紹了利用Node.js對文件進行重命名的相關資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 手把手教你通過nodejs快速搭建一個服務器

    手把手教你通過nodejs快速搭建一個服務器

    這篇文章主要給大家介紹了關于如何通過nodejs快速搭建一個服務器的相關資料,在node.js中創(chuàng)建一個服務器非常簡單,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10

最新評論