Node fs 模塊

Node.js 的 fs 模塊提供了與文件系統進行交互的功能。 無需安裝,作為 Node 核心的一部分,可以通過 require 來使用: const fs = require('fs') 一旦這樣做了,你就可以訪問它的所有方法,包括: fs.access():檢查文件是否存在,以及 Node 是否可以使用權限訪問該文件。 fs.appendFile():將數據追加到文件中。如果文件不存在,則會創建新的文件。 fs.chmod():更改指定文件的許可權。相關方法有:fs.lchmod(),fs.fchmod() fs.chown():更改指定文件的所有者和群組。相關方法有:fs.fchown(),fs.lchown() fs.close():關閉文件描述符 fs.copyFile():複製文件 fs.createReadStream():創建可讀的文件流 fs.createWriteStream():創建可寫的文件流 fs.link():在文件中創建一個新的硬連接 fs.mkdir():創建一個新的文件夾 fs.mkdtemp():創建一個臨時目錄 fs.open():設置文件模式 fs.readdir():讀取目錄的內容 fs.readFile():讀取文件的內容。相關方法有:fs.read() fs.readlink():讀取符號鏈接的值 fs.realpath():將相對文件路徑指針解析為完整路徑(.,..) fs.rename() :重命名文件或文件夾 fs.rmdir():刪除文件夾 fs.stat():返回文件的狀態。相關方法有:fs.fstat(),fs.lstat() fs.symlink():創建新的符號鏈接 fs.truncate():將指定文件截斷到指定長度。相關方法有:fs.ftruncate() fs.unlink():刪除文件或符號鏈接 fs.unwatchFile():停止監聽文件的變化 fs.utimes():更改文件的時間戳記。相關方法有:fs.futimes() fs.watchFile():開始監聽文件的變化。相關方法有:fs.watch() fs.writeFile():將數據寫入文件。相關方法有:fs.write() 關於 fs 模塊的一個特點是,所有的方法默認都是異步的,但是也可以同步地進行操作,只需在方法名後面添加 Sync。 例如: fs.rename() fs.renameSync() fs.write() fs.writeSync() 這對應用程序的流程有很大的影響。 Node 10 包括對基於 promise 的 API 的實驗性支援。 舉個例子,讓我們來看看 fs.rename() 方法。使用回調函數來使用異步 API: const fs = require('fs') fs.rename('before.json', 'after.json', (err) => { if (err) { return console....

Node 檔案統計

如何使用 Node 獲取檔案的詳細資訊 每個檔案都有一組我們可以使用 Node 檢視的詳細資訊。 特別是使用 fs 模組提供的 stat() 方法。 您可以呼叫它並傳遞檔案路徑,一旦 Node 獲取了檔案詳細資訊,它將調用您傳遞的回調函數,該函數帶有2個參數:錯誤訊息和檔案統計資訊: const fs = require('fs') fs.stat('/Users/flavio/test.txt', (err, stats) => { if (err) { console.error(err) return } //我們可以在 `stats` 中存取檔案統計資訊 }) Node還提供了一個同步方法,它會阻塞線程,直到檔案統計資訊準備好: const fs = require('fs') try { const stats = fs.statSync('/Users/flavio/test.txt') } catch (err) { console.error(err) } 檔案資訊存儲在 stats 變數中。我們可以使用 stats 提取哪些類型的資訊? 有很多,包括: 使用 stats.isFile() 和 stats.isDirectory() 判斷檔案是目錄還是檔案 使用 stats.isSymbolicLink() 判斷檔案是否為符號連結 使用 stats.size 獲取檔案大小(以位元組為單位) 還有其他高級方法,但在日常編程中,您將主要使用上述方法。 const fs = require('fs') fs....

node-mass-rename-files

#如何在Node.js中批量更名文件 了解如何使用Node.js更改一组文件名 在本篇博客文章中,我将解释如何更改一组文件的名称。 相同的过程也适用于将文件移动到另一个文件夹,因为在更改名称时,实际上是更改文件的路径。 进行此任务的动机是:在Hugo中,我们可以将博客文章编写为文件,如下所示: first-post.md second-post.md third-post.md 我们还可以将它们添加到包含 index.md 文件的文件夹中: first-post/ > index.md second-post/ > index.md third-post/ > index.md 不同之处在于,使用文件夹可以更轻松地添加图片并将其与博客文章关联起来。 我本可以手动进行更改,但这个文件夹中有大约50个文件,我真的不想自己动手。 我希望能够自动进行更改。 让我们首先引入我们将使用的一个核心模块:fs。由于它是一个核心模块,所以无需进行 npm install。 const fs = require('fs') 然后,获取对当前文件夹的引用。假设我们要在想要执行此更改的同一文件夹中运行脚本。 __dirname 是指向当前工作文件夹的变量。 我获取了所有文件和文件夹的列表: const files = fs.readdirSync(__dirname) 然后,我仅筛选出以 .md 结束的项: for (const file of files) { if (file.endsWith('.md')) { console.log(file) } } 一旦我们有了代表文件名的 file 引用,我们就可以调用 fs.mkdirSync() 来创建文件夹: fs.mkdirSync( __dirname + '/' + file.replace('.md', ''), { recursive: true }, (err) => { console....

在 Node 中使用文件描述符

如何使用 Node 與文件描述符進行交互? 在與文件系統中的文件進行交互之前,您必須獲取文件描述符。 文件描述符是使用 fs 模塊提供的 open() 方法開啟文件時返回的東西,如下所示: const fs = require('fs') fs.open('/Users/flavio/test.txt', 'r', (err, fd) => { //fd 是我們的文件描述符 }) 注意我們在 fs.open() 調用的第二個參數中使用的 r。 該標誌表示我們將文件以只讀方式打開。 您通常會使用其他標誌,如下: r+:打開文件以進行讀寫操作 w+:打開文件以進行讀寫操作,並將流定位到文件的開頭。如果文件不存在,則創建文件 a:打開文件以進行寫操作,並將流定位到文件的末尾。如果文件不存在,則創建文件 a+:打開文件以進行讀寫操作,並將流定位到文件的末尾。如果文件不存在,則創建文件 您也可以使用 fs.openSync 方法打開文件,它不像回調函數那樣提供文件描述符對象,而是直接返回它,如下所示: const fs = require('fs') try { const fd = fs.openSync('/Users/flavio/test.txt', 'r') } catch (err) { console.error(err) } 當您獲取文件描述符後,您可以按照自己的選擇進行所有需要它的操作,例如呼叫 fs.open() 和與文件系統進行互動的其他操作。

如何使用 Node.js 的 fs 模組與 async/await

Node.js 內建的模組以往被稱為非 promise-based 模組。 這是由於在 promise 之前,這些模組就已經存在了。 我們已經有了 promisify 有一段時間了。但我最近發現 Node.js 提供了一個新的基於 promise 的 API。 我以為這是新功能,但它其實已經在 Node.js 10(2018年)中引入了,已經過了一段時間! 目前這個功能只適用於 fs 內建模組。 我不確定這是否很快就會移植到其他原生模組。 以下是如何使用它: import * as fs from 'node:fs/promises'; | 注意到現在可以使用 node:fs 约定来識別內建模組。 現在你可以使用任何 fs 方法,使用 promises 或 await: const posts = await fs.readdir('content');

如何在Node.js中檢查文件是否存在

如何使用Node.js的fs模塊來檢查文件系統中是否存在文件。 使用Node.js檢查文件是否存在的方法是使用fs.existsSync()方法: const fs = require('fs') const path = './file.txt' try { if (fs.existsSync(path)) { //文件存在 } } catch(err) { console.error(err) } 這種方法是同步的,意味著它是阻塞的。為了以異步的方式檢查文件是否存在,可以使用fs.access()方法,該方法檢查文件的存在性而不需要打開它: const fs = require('fs') const path = './file.txt' fs.access(path, fs.F_OK, (err) => { if (err) { console.error(err) return } //文件存在 })