站長資訊網
        最全最豐富的資訊網站

        node中的fs模塊是什么

        在node中,fs模塊指的是“文件系統模塊”,是用來操作文件的模塊。fs模塊的API大都提供三種操作方式:1、同步操作文件:代碼會被阻塞,不會繼續執行;2、異步回調函數操作文件:代碼不會被阻塞,需要傳入回調函數,當獲取到結果時,回調函數執行;3、異步Promise操作文件:代碼不會被阻塞,通過fs.promises調用方法操作,會返回一個Promise。

        node中的fs模塊是什么

        本教程操作環境:windows7系統、nodejs16版,DELL G3電腦。

        文件系統模塊(簡稱 fs)允許我們訪問計算機上的文件系統并與之交互。

        fs 模塊是 Node.js 官方提供的、用來操作文件的模塊。它提供了一系列的方法和屬性,用來滿足用戶對文件的操作需求。

        • fs.readFile() 方法,用來讀取指定文件中的內容

        • fs.writeFile() 方法,用來向指定的文件中寫入內容 如果要在 JavaScript 代碼中

        如何使用 fs

        文件系統模塊是一個核心的 Node.js 模塊。這意味著我們不必安裝它。我們唯一需要做的就是將 fs 模塊導入到自己的文件中。

        因此,在文件頂部添加:

        const fs = require('fs')

        現在,我們可以使用前綴 fs 從文件系統模塊調用任何方法。

        或者,我們可以只從 fs API 導入所需的方法,如下所示:

        const { writeFile, readFile } = require('fs')

        注意:為了方便起見,我們還需要導入 path 模塊。它是另一個核心 Node.js 模塊,它允許我們使用文件和目錄路徑。

        導入 fs 模塊后,在文件中添加:

        const path = require('path')

        使用文件系統模塊時,path 模塊不是必需的。但它對我們有很大的幫助!

        同步與異步

        fs模塊的文件操作一般支持同步和異步兩種API,異步又包括了回調函數和promsie的形式。同步一般后面帶sync字樣。

        fs模塊的API大都提供三種操作方式:

        • 同步操作文件:代碼會被阻塞,不會繼續執行

        • 異步回調函數操作文件:代碼不會被阻塞,需要傳入回調函數,當獲取到結果時,回調函數執行

        • 異步Promise操作文件:代碼不會被阻塞,通過fs.promises調用方法操作,會返回一個Promise,可以通過then、catch進行處理。

        需要注意的是,默認情況下,所有 fs 方法都是異步的。但是,我們可以通過在方法末尾添加 Sync 來使用同步版本。

        例如,writeFile 方法的同步版本為 writeFileSync。同步方法將同步的完成代碼,因此它們阻塞了主線程。阻塞 Node.js 中的主線程被認為是不好的做法,我們不應該這么做。

        因此,以下我們都將使用文件系統模塊中的異步方法。

        寫入文件

        要從 Node.js 應用程序寫入文件,請使用 writeFile 方法。

        writeFile 方法至少接受以下參數:

        • 文件名
        • 內容
        • 回調

        如果指定的文件已經存在,它會將舊內容替換為您作為參數提供的內容。如果指定的文件不存在,則創建一個新文件。

        導入 fspath 模塊后,在文件中編寫以下代碼:

        fs.writeFile('content.txt', 'All work and no play makes Jack a dull boy!', err => {   if (err) throw err    process.stdout.write('創建成功!') })

        上面的代碼將創建了一個名為 content.txt 的新文件,并添加了文本 All work and no play makes Jack a dull boy! 作為內容。如果存在任何錯誤,回調函數將拋出該錯誤。否則,它將向控制臺輸出文件創建成功。

        writeFile 還有其他變體,例如:

        • fs.writeFileSync — 同步寫入文件
        • fsPromises.writeFile — 使用基于 Promise 的 API 寫入文件

        查看此要點:https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92

        從文件中讀取

        在讀取文件之前,需要創建并存儲文件的路徑。path 模塊的路徑在這里很方便。

        使用 join 模塊中的 path 方法,您可以創建文件路徑,如下所示:

        const filePath = path.join(process.cwd(), 'content.txt')

        第一個參數 process.cwd() 返回當前工作目錄。現在您已經有了文件路徑,可以讀取文件的內容了。

        在文件中編寫以下代碼:

        fs.readFile(filePath, (error, content) => {   if (error) throw error    process.stdout.write(content) })

        readFile 方法至少接受兩個參數:

        • 文件的路徑
        • 回調

        如果有錯誤,它會拋出一個錯誤。否則,它會在終端中輸出文件內容。

        readFile 還有其他變體,例如:

        • fs.readFileSync — 同步寫入文件
        • fsPromises.readFile — 使用基于 Promise 的 API 寫入文件

        查看此要點:https://gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d

        讀取目錄的內容

        在目錄中顯示文件與讀取文件內容非常相似。但是,不是傳遞文件路徑,而是傳遞當前工作目錄(我們可以傳遞任何其他目錄)。

        然后,傳遞一個回調函數來處理響應。在文件中編寫以下代碼:

        fs.readdir(process.cwd(), (error, files) => {   if (error) throw error    console.log(files) })

        到目前為止,我們只使用 process.stdout.write 將內容輸出到終端。但是,您可以簡單地使用 console.log,就像上面的代碼片段一樣。

        如果運行該應用程序,我們應該會得到一個包含目錄中所有文件的數組。

        查看此要點:https://gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e

        刪除文件

        文件系統模塊有一種方法,允許您刪除文件。但是,需要注意的是,它只適用于文件,不適用于目錄。

        當以文件路徑作為參數調用 unlink 方法時,它將刪除該文件。將以下代碼段添加到文件中:

        fs.unlink(filePath, error => {   if (error) throw error    console.log('文件已刪除!') })

        如果您重新運行代碼,您的文件將被刪除!

        查看此要點:https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e

        創建目錄

        我們可以使用 mkdir 方法異步創建目錄。在文件中編寫以下代碼:

        fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => {   if (err) throw err    console.log('已成功創建文件夾!') })

        首先,要在當前工作目錄中創建一個新文件夾。如前所述,您可以使用 cwd() 方法從 process 對象獲取當前工作目錄。

        然后,傳遞要創建的一個或多個文件夾。但是,這并不意味著您必須在當前工作目錄中創建新文件夾。你可以在任何地方創建它們。

        現在,第二個參數是遞歸選項。如果未將其設置為 true,則無法創建多個文件夾。如果將 recursive 選項設置為 false,上述代碼將給出一個錯誤。試試看!

        但是,如果您只想創建一個文件夾,則無需將 recursive 選項設置為 true

        以下代碼可以正常工作!

        fs.mkdir(`${process.cwd()}/myFolder`, err => {   if (err) throw err    console.log('已成功創建文件夾!') });

        因此,我想強調使用 recursive。如果要在文件夾中創建文件夾,則需要將其設置為 true。它將創建所有文件夾,即使它們不存在。

        另一方面,如果您只想創建一個文件夾,可以將其保留為 false

        查看此要點:https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066

        刪除目錄

        刪除目錄的邏輯類似于創建目錄。如果您查看為創建目錄而編寫的代碼和下面的代碼,您會發現相似之處。

        因此,在文件中編寫以下代碼:

        fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => {   if (err) throw err    console.log('已成功刪除文件夾!') })

        使用文件系統模塊中的 rmdir 方法,并傳遞以下參數:

        • 要刪除的目錄
        • 遞歸屬性
        • 回調

        如果將 recursive 屬性設置為 true,它將刪除文件夾及其內容。請務必注意,如果文件夾中包含內容,則需要將其設置為 true。否則,您將得到一個錯誤。

        以下代碼段僅在文件夾為空時有效:

        fs.rmdir(`${process.cwd()}/myFolder/`, err => {   if (err) throw err    console.log('已成功刪除文件夾!') })

        如果 myFolder 中有其他文件和/或文件夾,如果未傳遞 { recursive: true },則會出現錯誤。

        知道何時使用 recursive 選項以及何時不避免問題是很重要的。

        查看此要點:https://gist.github.com/catalinpit/a8cb6aca75cef8d6ac5043eae9ba22ce

        目錄/文件重命名

        使用 fs 模塊,您可以重命名目錄和文件。下面的代碼片段顯示了如何使用 rename 方法進行此操作。

        // 重命名一個目錄fs.rename(`${process.cwd()}/myFolder/secondFolder`, `${process.cwd()}/myFolder/newFolder`, err => {   if (err) throw err    console.log('目錄重命名!') });// 重命名一個文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => {   if (err) throw err    console.log('文件重命名!') });

        rename 方法包含三個參數:

        • 第一個參數是現有的文件夾/文件
        • 第二個參數是新名稱
        • 回調

        因此,要重命名文件或目錄,我們需要傳遞當前文件/目錄的名稱和新名稱。運行應用程序后,應更新目錄/文件的名稱。

        需要注意的是,如果新路徑已經存在(例如,文件/文件夾的新名稱),它將被覆蓋。因此,請確保不要錯誤地覆蓋現有文件/文件夾。

        查看此要點:https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e

        向文件中添加內容

        我們還可以使用 appendFile 方法向現有文件添加新內容。

        如果比較 writeFileappendFile 這兩種方法,我們可以發現它們是相似的。傳遞文件路徑、內容和回調。

        fs.appendFile(filePath, 'nAll work and no play makes Jack a dull boy!', err => {   if (err) throw err      console.log('All work and no play makes Jack a dull boy!') })

        上面的代碼片段演示了如何向現有文件添加新內容。如果運行應用程序并打開文件,您應該會看到其中的新內容。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩精品极品视频在线观看免费 | 国产精品永久久久久久久久久| 亚洲精品乱码久久久久久| 97精品国产自在现线免费观看| 国产精品理论片在线观看| 久久99精品久久久久久hb无码 | 中文字幕久久精品无码| 国产亚洲曝欧美不卡精品| 国产亚洲精品va在线| 国产精品污WWW在线观看| 亚洲精品无码mv在线观看网站| 国产精品成人69XXX免费视频| 91麻豆国产福利精品| 欧美精品中文字幕亚洲专区 | 久久精品国产亚洲5555| 柠檬福利精品视频导航| 精品久久久久久成人AV| 三上悠亚久久精品| 中文字幕精品一区| 香蕉国产精品麻豆亚洲欧美日韩精品自拍欧美v国 | 国产精品乱视频| 欧美成人精品一区二区三区| 国产精品免费高清在线观看| 精品视频一区二区三三区四区 | 在线精品视频一区二区| 欧美精品一区二区三区免费观看 | 国产精品爱搞视频网站 | 国产成人精品怡红院在线观看| 国产亚洲精品影视在线产品| 日本精品卡一卡2卡3卡四卡| 国产成人精品日本亚洲11| 国产精品对白交换视频| 久久精品午夜一区二区福利| 亚洲av永久无码精品国产精品| 亚洲人成精品久久久久| 亚洲国产精品无码久久一区二区| 亚洲国产精品福利片在线观看| 亚洲国产精品无码一线岛国| 久久精品夜夜夜夜夜久久| 久久国产欧美日韩精品| 国内精品久久久久影院一蜜桃|