久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

node中的fs模塊是什么

在node中,fs模塊指的是“文件系統(tǒng)模塊”,是用來操作文件的模塊。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ì)被阻塞,通過fs.promises調(diào)用方法操作,會(huì)返回一個(gè)Promise。

node中的fs模塊是什么

本教程操作環(huán)境:windows7系統(tǒng)、nodejs16版,DELL G3電腦。

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

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

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

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

如何使用 fs

文件系統(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')

注意:為了方便起見,我們還需要導(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ì)被阻塞,通過fs.promises調(diào)用方法操作,會(huì)返回一個(gè)Promise,可以通過then、catch進(jìn)行處理。

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

例如,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)入 fspath 模塊后,在文件中編寫以下代碼:

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 寫入文件

查看此要點(diǎn):https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92

從文件中讀取

在讀取文件之前,需要?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 寫入文件

查看此要點(diǎn):https://gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d

讀取目錄的內(nèi)容

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

然后,傳遞一個(gè)回調(diào)函數(shù)來處理響應(yīng)。在文件中編寫以下代碼:

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

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

如果運(yùn)行該應(yīng)用程序,我們應(yīng)該會(huì)得到一個(gè)包含目錄中所有文件的數(shù)組。

查看此要點(diǎn):https://gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e

刪除文件

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

當(dāng)以文件路徑作為參數(shù)調(diào)用 unlink 方法時(shí),它將刪除該文件。將以下代碼段添加到文件中:

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

如果您重新運(yùn)行代碼,您的文件將被刪除!

查看此要點(diǎn):https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e

創(chuàng)建目錄

我們可以使用 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,則無法創(chuàng)建多個(gè)文件夾。如果將 recursive 選項(xiàng)設(shè)置為 false,上述代碼將給出一個(gè)錯(cuò)誤。試試看!

但是,如果您只想創(chuàng)建一個(gè)文件夾,則無需將 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

查看此要點(diǎn):https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066

刪除目錄

刪除目錄的邏輯類似于創(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í)不避免問題是很重要的。

查看此要點(diǎn):https://gist.github.com/catalinpit/a8cb6aca75cef8d6ac5043eae9ba22ce

目錄/文件重命名

使用 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)有文件/文件夾。

查看此要點(diǎn):https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e

向文件中添加內(nèi)容

我們還可以使用 appendFile 方法向現(xiàn)有文件添加新內(nèi)容。

如果比較 writeFileappendFile 這兩種方法,我們可以發(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!') })

上面的代碼片段演示了如何向現(xiàn)有文件添加新內(nèi)容。如果運(yùn)行應(yīng)用程序并打開文件,您應(yīng)該會(huì)看到其中的新內(nèi)容。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲专区视频| 91精品日本| 亚洲黄色免费av| 日韩在线观看一区| 欧美91福利在线观看| 影音先锋久久| 欧美日本久久| 日产午夜精品一线二线三线| 免费高潮视频95在线观看网站| 亚洲无线一线二线三线区别av| 西西人体一区二区| 欧美久久香蕉| 日韩国产一区二区| 亚洲专区欧美专区| 日韩av三区| 欧美日韩国产一区二区在线观看| 久久久久九九精品影院| 四季av一区二区凹凸精品| 午夜精品成人av| 亚洲小说春色综合另类电影| 国产精品久久久久久久久久久久久久久| 91亚洲国产高清| 亚洲专区视频| 国产高潮在线| 欧美另类综合| 国产欧美激情| 欧美 日韩 国产精品免费观看| 日韩精品久久理论片| 国产传媒av在线| 最新国产精品久久久| 国产精品视频一区二区三区| 久久精品中文| 国产乱子精品一区二区在线观看 | 国产精品一区亚洲| 成人日韩在线| 啪啪亚洲精品| 久久久成人网| 国产精品一区2区3区| 亚洲第一区色| 国产福利资源一区| 日韩视频久久| 国产一区二区三区四区二区| 亚洲激情偷拍| 精品欠久久久中文字幕加勒比| 亚洲二区三区不卡| 欧美国产三级| 亚洲一区二区小说| 91精品韩国| 国产日产一区| 亚洲免费一区二区| 蜜桃av.网站在线观看| 亚洲a级精品| 久久激情中文| 久久久91麻豆精品国产一区| 蜜臀91精品一区二区三区| 97人人精品| 国产图片一区| 好吊视频一区二区三区四区| 美女毛片一区二区三区四区最新中文字幕亚洲 | 日韩在线观看一区二区| 福利精品一区| 国产精品久久久久久久久久久久久久久| 99热精品在线观看| 黄色aa久久| 精品一区二区三区的国产在线观看 | 水蜜桃久久夜色精品一区的特点| 日韩欧美自拍| 老牛国内精品亚洲成av人片 | 欧美专区在线| 九九综合九九| 久久精品卡一| 日韩.com| 精品一区av| 国产亚洲字幕| 日韩av黄色在线| aⅴ色国产欧美| 欧美精品高清| 久久久男人天堂| 国内一区二区三区| 麻豆91精品视频| 你懂的国产精品永久在线| 日韩美女国产精品| 日韩精品免费视频一区二区三区 | 福利一区二区免费视频| 老司机精品视频在线播放| 欧美国产亚洲精品| 国产精品亚洲综合在线观看| 日韩精品久久久久久| 亚洲三级毛片| 日本aⅴ免费视频一区二区三区| 综合国产在线| 日本视频一区二区| 国产激情欧美| 久久这里只有精品一区二区| 美女国产一区二区三区| 美女久久99| av资源中文在线| 日韩欧美一区二区三区在线观看 | 日韩av网站在线观看| 日韩精品成人在线观看| 97精品国产99久久久久久免费| 青青草国产成人99久久| 国产欧美在线| 日本激情一区| 久久九九精品| 亚洲深爱激情| 亚洲免费福利一区| 911精品国产| 欧美黑人巨大videos精品| 久久久91麻豆精品国产一区| 老司机免费视频一区二区三区| 国产91在线精品| 国产 日韩 欧美一区| 午夜久久免费观看| 中文不卡在线| 欧美精品不卡| 91精品推荐| 免费日本视频一区| 国产精品久久久久久久久久久久久久久| 精品中文字幕一区二区三区四区| 不卡专区在线| 最新亚洲一区| 日韩欧美另类中文字幕| 久久久精品国产**网站| 免费污视频在线一区| 欧美日韩国产在线观看网站| 综合五月婷婷| 久久精品国产99国产精品| 99久久激情| 日韩精品一区二区三区中文在线 | 国产精品高潮呻吟久久久久| 综合日韩av| 日韩精品一级中文字幕精品视频免费观看 | 日韩在线二区| 亚洲制服少妇| 国产精品亚洲欧美日韩一区在线| 日韩精品不卡一区二区| 午夜欧美精品| 国产精品一区二区美女视频免费看| caoporn视频在线| 久久亚洲国产精品一区二区| 久久男人av| 视频在线观看一区| 国产伊人久久| 日韩精品一二三四| 欧美国产日本| 久久av在线| 欧美激情另类| 日韩精品乱码av一区二区| 国产精品专区免费| 日韩综合一区二区| 亚洲精品.com| 国产精品二区影院| 国产亚洲永久域名| 风间由美中文字幕在线看视频国产欧美| 免费视频亚洲| 欧美国产日本| 中文字幕免费一区二区| 精品日韩视频| 久久爱www.| 国产美女精品| 日韩成人亚洲| 麻豆国产91在线播放| 中文字幕视频精品一区二区三区| 日韩在线观看一区| 国产精品亚洲综合久久| 日韩精品一区第一页| 精品国模一区二区三区| 国产精品久久乐| 亚欧成人精品| 午夜欧美精品| av亚洲一区二区三区| 欧美国产免费| 91精品在线免费视频| 免费日韩av片| 久久久久国产| 色婷婷色综合| 欧美亚洲网站| 亚洲影院天堂中文av色| 亚洲午夜91| 三级在线看中文字幕完整版| 国产精品视频一区二区三区 | 日韩精品一二三四| 亚洲调教视频在线观看| 精品国产美女a久久9999| 日本在线一区二区三区| 黄色亚洲免费| 亚洲无线一线二线三线区别av| 麻豆国产一区| 久久国产乱子精品免费女| 亚洲精品一级| 中文精品电影| 亚洲影视一区| 人人精品人人爱| 亚洲欧洲一区二区天堂久久| 亚洲成人三区| 伊人久久亚洲美女图片| 韩日一区二区三区| 99在线|亚洲一区二区| 好看的亚洲午夜视频在线|