文件描述符在您能夠與文件系統(tǒng)中的文件進行交互之前,您必須獲得一個文件描述符 。
文件描述符是對打開文件的引用,是通過使用fs模塊提供的open()方法打開文件返回的數(shù)字(fd) 。此數(shù)字(fd)唯一標識操作系統(tǒng)中打開的文件:
const fs = require('fs');fs.open('/Users/joe/test.txt', 'r', (err, fd) => { // fd is our file descriptor});【查看nodejs安裝路徑 node文檔怎么看】請注意,我們將r用作fs.open()調用的第二個參數(shù) 。
該標志表示我們打開文件進行讀取(read) 。
您通常使用的其他標志有:
描述
不存在則創(chuàng)建
r+
此標志打開文件進行讀取和寫入
X
w+
此標志打開文件進行讀取和寫入,并將流定位在文件的開頭
v
a
這個標志打開文件進行寫入,它還將流定位在文件的末尾
v
a+
這個標志打開文件進行讀寫,它還將流定位在文件的末尾
v
您也可以使用fs.openSync方法打開文件,該方法返回文件描述符,而不是在回調中提供:
const fs = require('fs');try { const fd = fs.openSync('/Users/joe/test.txt', 'r');} catch (err) { console.error(err);}一旦您獲得了文件描述符 , 無論您選擇什么方式,您都可以執(zhí)行所有需要它的操作,比如調用fs.close()和許多其他與文件系統(tǒng)交互的操作 。您也可以使用fs/promises模塊提供的基于promise的fsPromises.open方法打開文件 。
fs/progress模塊僅從Node.js v14開始提供 。在v14之前 , 在v10之后,您可以使用require(‘fs’).proness 。在v10之前 , 在v8之后 , 您可以使用util.proisify將fs方法轉換為基于promise的方法 。
const fs = require('fs/promises');// Or const fs = require('fs').promises before v14.async function example() {let filehandle;try {filehandle = await fs.open('/Users/joe/test.txt', 'r');console.log(filehandle.fd);console.log(await filehandle.readFile({ encoding: 'utf8' }));} finally {if (filehandle) await filehandle.close();}}example();以下是util.prostify的一個示例:const fs = require('fs');const util = require('util');async function example() {const open = util.promisify(fs.open);const fd = await open('/Users/joe/test.txt', 'r');}example();要查看有關fs/promise模塊的更多詳細信息,請查看fs/promises API 。讀取文件在Node.js中讀取文件的最簡單方法是使用fs.readFile()方法,向其傳遞文件路徑、編碼和回調函數(shù),該函數(shù)將與文件數(shù)據(jù)(以及錯誤)一起調用:
const fs = require('fs');fs.readFile('/Users/joe/test.txt', 'utf8', (err, data) => {if (err) {console.error(err);return;} console.log(data);});或者,您可以使用同步版本fs.readFileSync():const fs = require('fs');try {const data = http://www.wokk.cn/fs.readFileSync('/Users/joe/test.txt', 'utf8');console.log(data);} catch (err) { console.error(err);}您還可以使用fs/promises模塊提供的基于promise的fsPromises.readFile()方法:const fs = require('fs/promises');async function example() {try {const data = http://www.wokk.cn/await fs.readFile('/Users/joe/test.txt', { encoding: 'utf8' });console.log(data);} catch (err) { console.log(err);}}example();fs.readFile()、fs.readFileSync()和fsPromises.readFile()這三個函數(shù)在返回數(shù)據(jù)之前都會讀取內存中文件的全部內容 。這意味著大文件將對內存消耗和程序執(zhí)行速度產生重大影響 。
在這種情況下,更好的選擇是使用流讀取文件內容 。
以上關于本文的內容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內容,希望對您有所幫助:- 如何下載和安裝方正仿宋簡體字體
- TC Games連接手機的詳細步驟
- WIN7系統(tǒng)如何查看隱藏的文件和文件夾
- DOS命令行中如何查看輸入命令的歷史記錄
- 新如何更快速地下載和安裝Office 2019?詳細教程分享!
- 如何查看電腦型號
- 如何正確給筆記本電腦安裝內存條
- 如何在電腦上安裝快資訊應用
- 如何下載并安裝PC版微信
- 新Unity軟件中如何高效查看和管理收藏夾SEO技巧
