本篇內(nèi)容主要講解“node中的fs模塊怎么使用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“node中的fs模塊怎么使用”吧!
環(huán)翠ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
在node中,fs模塊指的是“文件系統(tǒng)模塊”,是用來(lái)操作文件的模塊。fs模塊的API大都提供三種操作方式:1、同步操作文件:代碼會(huì)被阻塞,不會(huì)繼續(xù)執(zhí)行;2、異步回調(diào)函數(shù)操作文件:代碼不會(huì)被阻塞,需要傳入回調(diào)函數(shù),當(dāng)獲取到結(jié)果時(shí),回調(diào)函數(shù)執(zhí)行;3、異步Promise操作文件:代碼不會(huì)被阻塞,通過(guò)fs.promises調(diào)用方法操作,會(huì)返回一個(gè)Promise。
本教程操作環(huán)境:windows7系統(tǒng)、nodejs16版,DELL G3電腦。
文件系統(tǒng)模塊(簡(jiǎn)稱 fs)允許我們?cè)L問(wèn)計(jì)算機(jī)上的文件系統(tǒng)并與之交互。
fs 模塊是 Node.js 官方提供的、用來(lái)操作文件的模塊。它提供了一系列的方法和屬性,用來(lái)滿足用戶對(duì)文件的操作需求。
fs.readFile() 方法,用來(lái)讀取指定文件中的內(nèi)容
fs.writeFile() 方法,用來(lái)向指定的文件中寫入內(nèi)容 如果要在 JavaScript 代碼中
文件系統(tǒng)模塊是一個(gè)核心的 Node.js 模塊。這意味著我們不必安裝它。我們唯一需要做的就是將 fs 模塊導(dǎo)入到自己的文件中。
因此,在文件頂部添加:
const fs = require('fs')
現(xiàn)在,我們可以使用前綴 fs 從文件系統(tǒng)模塊調(diào)用任何方法。
或者,我們可以只從 fs API 導(dǎo)入所需的方法,如下所示:
const { writeFile, readFile } = require('fs')
注意:為了方便起見(jiàn),我們還需要導(dǎo)入 path 模塊。它是另一個(gè)核心 Node.js 模塊,它允許我們使用文件和目錄路徑。
導(dǎo)入 fs 模塊后,在文件中添加:
const path = require('path')
使用文件系統(tǒng)模塊時(shí),path 模塊不是必需的。但它對(duì)我們有很大的幫助!
fs模塊的文件操作一般支持同步和異步兩種API,異步又包括了回調(diào)函數(shù)和promsie的形式。同步一般后面帶sync字樣。
fs模塊的API大都提供三種操作方式:
同步操作文件:代碼會(huì)被阻塞,不會(huì)繼續(xù)執(zhí)行
異步回調(diào)函數(shù)操作文件:代碼不會(huì)被阻塞,需要傳入回調(diào)函數(shù),當(dāng)獲取到結(jié)果時(shí),回調(diào)函數(shù)執(zhí)行
異步Promise操作文件:代碼不會(huì)被阻塞,通過(guò)fs.promises調(diào)用方法操作,會(huì)返回一個(gè)Promise,可以通過(guò)then、catch進(jìn)行處理。
需要注意的是,默認(rèn)情況下,所有 fs 方法都是異步的。但是,我們可以通過(guò)在方法末尾添加 Sync 來(lái)使用同步版本。
例如,writeFile 方法的同步版本為 writeFileSync。同步方法將同步的完成代碼,因此它們阻塞了主線程。阻塞 Node.js 中的主線程被認(rèn)為是不好的做法,我們不應(yīng)該這么做。
因此,以下我們都將使用文件系統(tǒng)模塊中的異步方法。
要從 Node.js 應(yīng)用程序?qū)懭胛募?,?qǐng)使用 writeFile
方法。
writeFile
方法至少接受以下參數(shù):
文件名
內(nèi)容
回調(diào)
如果指定的文件已經(jīng)存在,它會(huì)將舊內(nèi)容替換為您作為參數(shù)提供的內(nèi)容。如果指定的文件不存在,則創(chuàng)建一個(gè)新文件。
導(dǎo)入 fs
和 path
模塊后,在文件中編寫以下代碼:
fs.writeFile('content.txt', 'All work and no play makes Jack a dull boy!', err => { if (err) throw err process.stdout.write('創(chuàng)建成功!') })
上面的代碼將創(chuàng)建了一個(gè)名為 content.txt
的新文件,并添加了文本 All work and no play makes Jack a dull boy!
作為內(nèi)容。如果存在任何錯(cuò)誤,回調(diào)函數(shù)將拋出該錯(cuò)誤。否則,它將向控制臺(tái)輸出文件創(chuàng)建成功。
writeFile
還有其他變體,例如:
fs.writeFileSync
— 同步寫入文件
fsPromises.writeFile
— 使用基于 Promise 的 API 寫入文件
在讀取文件之前,需要?jiǎng)?chuàng)建并存儲(chǔ)文件的路徑。path
模塊的路徑在這里很方便。
使用 join
模塊中的 path
方法,您可以創(chuàng)建文件路徑,如下所示:
const filePath = path.join(process.cwd(), 'content.txt')
第一個(gè)參數(shù) process.cwd()
返回當(dāng)前工作目錄?,F(xiàn)在您已經(jīng)有了文件路徑,可以讀取文件的內(nèi)容了。
在文件中編寫以下代碼:
fs.readFile(filePath, (error, content) => { if (error) throw error process.stdout.write(content) })
readFile
方法至少接受兩個(gè)參數(shù):
文件的路徑
回調(diào)
如果有錯(cuò)誤,它會(huì)拋出一個(gè)錯(cuò)誤。否則,它會(huì)在終端中輸出文件內(nèi)容。
readFile
還有其他變體,例如:
fs.readFileSync
— 同步寫入文件
fsPromises.readFile
— 使用基于 Promise 的 API 寫入文件
在目錄中顯示文件與讀取文件內(nèi)容非常相似。但是,不是傳遞文件路徑,而是傳遞當(dāng)前工作目錄(我們可以傳遞任何其他目錄)。
然后,傳遞一個(gè)回調(diào)函數(shù)來(lái)處理響應(yīng)。在文件中編寫以下代碼:
fs.readdir(process.cwd(), (error, files) => { if (error) throw error console.log(files) })
到目前為止,我們只使用 process.stdout.write
將內(nèi)容輸出到終端。但是,您可以簡(jiǎn)單地使用 console.log
,就像上面的代碼片段一樣。
如果運(yùn)行該應(yīng)用程序,我們應(yīng)該會(huì)得到一個(gè)包含目錄中所有文件的數(shù)組。
文件系統(tǒng)模塊有一種方法,允許您刪除文件。但是,需要注意的是,它只適用于文件,不適用于目錄。
當(dāng)以文件路徑作為參數(shù)調(diào)用 unlink
方法時(shí),它將刪除該文件。將以下代碼段添加到文件中:
fs.unlink(filePath, error => { if (error) throw error console.log('文件已刪除!') })
如果您重新運(yùn)行代碼,您的文件將被刪除!
我們可以使用 mkdir
方法異步創(chuàng)建目錄。在文件中編寫以下代碼:
fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => { if (err) throw err console.log('已成功創(chuàng)建文件夾!') })
首先,要在當(dāng)前工作目錄中創(chuàng)建一個(gè)新文件夾。如前所述,您可以使用 cwd()
方法從 process
對(duì)象獲取當(dāng)前工作目錄。
然后,傳遞要?jiǎng)?chuàng)建的一個(gè)或多個(gè)文件夾。但是,這并不意味著您必須在當(dāng)前工作目錄中創(chuàng)建新文件夾。你可以在任何地方創(chuàng)建它們。
現(xiàn)在,第二個(gè)參數(shù)是遞歸選項(xiàng)。如果未將其設(shè)置為 true
,則無(wú)法創(chuàng)建多個(gè)文件夾。如果將 recursive
選項(xiàng)設(shè)置為 false
,上述代碼將給出一個(gè)錯(cuò)誤。試試看!
但是,如果您只想創(chuàng)建一個(gè)文件夾,則無(wú)需將 recursive
選項(xiàng)設(shè)置為 true
。
以下代碼可以正常工作!
fs.mkdir(`${process.cwd()}/myFolder`, err => { if (err) throw err console.log('已成功創(chuàng)建文件夾!') });
因此,我想強(qiáng)調(diào)使用 recursive
。如果要在文件夾中創(chuàng)建文件夾,則需要將其設(shè)置為 true
。它將創(chuàng)建所有文件夾,即使它們不存在。
另一方面,如果您只想創(chuàng)建一個(gè)文件夾,可以將其保留為 false
。
刪除目錄的邏輯類似于創(chuàng)建目錄。如果您查看為創(chuàng)建目錄而編寫的代碼和下面的代碼,您會(huì)發(fā)現(xiàn)相似之處。
因此,在文件中編寫以下代碼:
fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => { if (err) throw err console.log('已成功刪除文件夾!') })
使用文件系統(tǒng)模塊中的 rmdir
方法,并傳遞以下參數(shù):
要?jiǎng)h除的目錄
遞歸屬性
回調(diào)
如果將 recursive
屬性設(shè)置為 true
,它將刪除文件夾及其內(nèi)容。請(qǐng)務(wù)必注意,如果文件夾中包含內(nèi)容,則需要將其設(shè)置為 true
。否則,您將得到一個(gè)錯(cuò)誤。
以下代碼段僅在文件夾為空時(shí)有效:
fs.rmdir(`${process.cwd()}/myFolder/`, err => { if (err) throw err console.log('已成功刪除文件夾!') })
如果 myFolder
中有其他文件和/或文件夾,如果未傳遞 { recursive: true }
,則會(huì)出現(xiàn)錯(cuò)誤。
知道何時(shí)使用 recursive
選項(xiàng)以及何時(shí)不避免問(wèn)題是很重要的。
使用 fs
模塊,您可以重命名目錄和文件。下面的代碼片段顯示了如何使用 rename
方法進(jìn)行此操作。
// 重命名一個(gè)目錄fs.rename(`${process.cwd()}/myFolder/secondFolder`, `${process.cwd()}/myFolder/newFolder`, err => { if (err) throw err console.log('目錄重命名!') });// 重命名一個(gè)文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => { if (err) throw err console.log('文件重命名!') });
rename
方法包含三個(gè)參數(shù):
第一個(gè)參數(shù)是現(xiàn)有的文件夾/文件
第二個(gè)參數(shù)是新名稱
回調(diào)
因此,要重命名文件或目錄,我們需要傳遞當(dāng)前文件/目錄的名稱和新名稱。運(yùn)行應(yīng)用程序后,應(yīng)更新目錄/文件的名稱。
需要注意的是,如果新路徑已經(jīng)存在(例如,文件/文件夾的新名稱),它將被覆蓋。因此,請(qǐng)確保不要錯(cuò)誤地覆蓋現(xiàn)有文件/文件夾。
我們還可以使用 appendFile
方法向現(xiàn)有文件添加新內(nèi)容。
如果比較 writeFile
和 appendFile
這兩種方法,我們可以發(fā)現(xiàn)它們是相似的。傳遞文件路徑、內(nèi)容和回調(diào)。
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!') })
到此,相信大家對(duì)“node中的fs模塊怎么使用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
本文題目:node中的fs模塊怎么使用
標(biāo)題網(wǎng)址:http://muchs.cn/article24/ipjece.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站維護(hù)、App設(shè)計(jì)、外貿(mào)建站、靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)