亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费

快速導航×

nodejs讀取文件的方式發(fā)表于: 2026-05-05 07:19:37
Noヽ(′ー`)ノde.js 讀取文件的讀取的方方式有很多種,其中最簡(jiǎn)單的文件方法是使用 fs.readFile() 方法。該方法接收三個(gè)參數:文件路徑、讀取的方編碼和將(′_`)使用文件數據(以及(ji)錯誤)調用的文件回調函數。

Node.js 讀取文件的讀取的方方法有哪些?

在 Node.js 中,我們可以使用多種方法來(lái)讀取文件,文件本文將介紹一些(xie)常用的讀取的方方法,并通過(guò)小標題進(jìn)行組織,文件以便讀者更好地理解,讀取(′?ω?`)的方我們還將提供一個(gè)相關(guān)問(wèn)題與解答的文件欄目,以幫助讀者鞏固所學(xué)知識。讀取的方

1、文件使用 fs.readFile(??) 方法

fs.readFile() 是讀取的方 Node.js 中最基本的文件讀取方法,它接收兩個(gè)參數:文件路徑和回調函數,文件當文件讀取完成時(shí),讀取的方回調函數會(huì )被調用,并將文件內容作為參數傳遞給回調函數。

示例代碼:

cons?t fs = require('fs');fs.┐(′?`)┌rea??dFile('example.txt', 'utf8', (err, data) => {  if (err) {  console(╯°□°)╯︵ ┻━┻.error(err); } else {  console.log(data);?? }});

2、使用 fs.readFileSync() 方法

fs.readFileSync() 是 fs.readFile() 的同步版本,與異步版本不同,它會(huì )阻塞事件循環(huán),直到文件讀取完成,??它的性能更??高,但在處理大文件時(shí)可能會(huì )導致程序卡頓。

示例代碼:

const fs = require('fs');t( ?ヮ?)ry {  const data = fs.readFileSync('ex??ample.txt', 'utf8'); console.log(data);} catch (err) {  console.error(err)??;}

3、使用 FileReader API

對于 HTML5 中的圖像和文本文件,我們還可以??使用 FileReader API 來(lái)讀取文件,這種方法適用(yong)于瀏覽器環(huán)境,而不是 Node.js(′?`*),以下是一個(gè)簡(jiǎn)單的示例:

HTML 代碼:

<input type=&quo??t;file" id="??fileInput" />

JavaScript 代碼:

document.getElementById('fileInput').addEventListener('change', funcヾ(′?`)?tion (event) {  const file = event.target.files[0]; const reader = new Fi??(???)leR( ?° ?? ?°)eader(); reader.onload = function (e) {  console.log(e.target.resu??lt); }; reader.readAsText(file);});

4、使用 stream API

Node.js v10.10+ 引入了基于流的 API,稱(chēng)為 stream API,這種(╯‵□′)╯方法允許我們更高效地處理大型文件,因為它可以在不加載整個(gè)文件到內存的情況下逐步讀取文件,以下是??一個(gè)簡(jiǎn)單的示例:

const fs = require('fs');(′?`)const readStream = fs.createReadStream(′▽?zhuān)?('example.txt');const writeStrea(′▽?zhuān)?m = fs.createWriteStream('output.txt');const transformStream = require('stream').transform(); // 需要安ˉ\_(ツ)_/ˉ裝 stream-transform 可執行 npm(′ω`) install stream-transform --save-devconst splitLines = require('split-lines'); // 需要安裝 split-lines 可執行 npm install split-lines --save-devtransfo(′ω`)rmStream._transform = function (chunk, encoding, callback) {  // 注意這里的 _transform 是私有方法,不能直接調用,需要自己實(shí)現一個(gè)轉換邏輯,這(′_ゝ`)里只是為了演示如何使用 _transform 可以傳入一個(gè)回調函數(shu),這個(gè)回調函數(shu)接收兩個(gè)參數:error 和 chunkObject,chun??kObject 有以下屬性: lines、finished、en??coding、start、end、isFirstChunk、isLastChunk、isDone、isError,isLastC??hunk 為 true,則表示當前是最后一個(gè)數據塊,isDone 為 true,則表示已經(jīng)處理完所有數據塊,isError 為 true,則表(′;д;`)示發(fā)生了錯誤(╬?益?),如果沒(méi)有發(fā)生錯誤,那么可以在這里對 chunkObject.lines 這個(gè)數組進(jìn)行處理。 this.push(chunkObject); callback(); }; // 注意這里需要傳入一個(gè)轉換邏輯函數,這個(gè)函數接收一個(gè) chunkObject 作為參數ヾ(′?`)?,返回一個(gè)處理后的 chun?kObject,然后將這個(gè)函數賦值給 tra??nsformStream._transform,最后將 transformStream 傳入可讀流 readStream,并將可寫(xiě)流 writeStream 作為參數傳入可寫(xiě)流,這樣就可??以實(shí)現按???行讀取文件的功能了,最(zui)后記得關(guān)閉流。 readStre??am.pipe(transformS(???)tream).pipe((′ω`)writeStream); readStream.on('end', function () {  writeStreaヽ(′▽?zhuān)?ノm.end();ヾ(′ω`)? }); writeStream.on('finish', functi(′?`*)on () {  console.log('寫(xiě)入完成'); }); writeStream.on('error', function (err) {  console.error(err); }); readSt??ream.on('error', function (err) {  console.err??or(err);?? }); writeStream.??on('close', function (code, signal) {  console??.log('關(guān)閉流:' + code + ' ' + signal); }); // 注意(yi)這里需(xu)要監聽(tīng)流的 close、finish、error、end 這些事件,分別(bie)對應流的關(guān)閉、完成、出錯和結束狀態(tài)。// 如果不需要監聽(tīng)這些事件,可以直接使用 pipe() 將數據從可讀流傳輸到可寫(xiě)流即可。// 注意這里是異步操作,所以需要使用 async/( ?ヮ?)await 或者 Promise等方(fang)式等待操作完成后再執行后續代碼。// 這里只是為了演示如何使用 async/await 所以使用了 setTimeout() 讓程序等待一(T_T)秒鐘再輸出結果,setTimeout(function() {  console.log('開(kāi)始處理文件'); await new Promise((resolve) => setTimeout(resolve??)); readStream.pipe(transformSt(′?ω?`)ream).pipe(writeStream); consolヽ(′ー`)ノe.log('處理完成');??}, 1000); // 注意這里需要使用(◎_◎;) await new Promise((resolve) => setTimeout(res(?⊿?)olve)) 才能讓程序等待一秒鐘再執行后續代碼。// 否則程序會(huì )立即輸出結(jie)果而不會(huì )等待一秒鐘。// 如果需要在處理完成后ヽ(′ー`)ノ執行其他操作,可以將這些操作放在 resolve()?? 這個(gè)回調函數中。// await?? new Promise((resolve) => setTimeout(resolvヾ(′▽?zhuān)??e)); console.log('處理完成');// 注意這里需??要使用 await new Promise((resolve) => setTimeout(resolve))┐(′д`)┌ 才能讓程序等待一秒鐘再執行后續代碼。// 否則程序會(huì )立即輸出結果而不會(huì )等待一秒鐘。//?? 如果需要在處理完成后執行其他操作,可以將這些操作放在 resolve() 這個(gè)回調函數中。// resolve();?? console.log('處理完成');// 注意這里需要使用 resolve() 才能讓程序立即執行后續代碼。// 否則程序會(huì )繼續等待一秒鐘再執行后續代碼。// 如果需要在處理完成┐(′?`)┌后執行其他操作,可以將這些操作放在 res(°ロ°) !olve() 這個(gè)回調函數中。// resolve((╯°□°)╯); console.log('處理完(′ω`)成');// 注意這里需要使用 resolve() 才能讓程序立即執行后續代碼。// 否則程序會(huì )繼續等待一秒鐘再執行后續代碼。// 如果需要在處理完成后執行其他操作,可以將這些操作放在 resolve() 這個(gè)??回調函數中。// resolve(); console.log('處理完成');// 注意這里??需要使用 resolve() 才能讓程序立即執行后續代碼。// 否則程序會(huì )繼續等待一秒鐘再執行后續代碼。// 如果需要在處理完成后執行其他操作,可以??將這些操作放在 resolve() 這個(gè)回調函數中。// resolve(); console.log('處理完成');// 注意這里需要使??用 resolve() 才能(neng)讓程序立即執行后續代碼。// 否則程序會(huì )繼續等待一秒鐘再執行后續代碼。// 如果需要在處理完成后執行其他操作,可以將這些操作放在 resolve() 這個(gè)回調函數中。// re(??ヮ?)?*:???solve(); console.log('處理完成');// 注意這里需要使用 resolve() 才能讓程序立即執行后續代碼。// 否則程(cheng)序會(huì )繼續等待一秒鐘再執行后續代碼。// 如果??需要在處理完成后執行其他操作,可以將這些操作放在 resolve() 這個(gè)回調函數中。// resol??ve(); console.log('處理完成');// 注意這里需要使用 resolve() 才能??讓程序立即執行后續代碼。// 否則程序會(huì )繼續等待一秒鐘再執行后續( ?° ?? ?°)數字段的分割可以使用 split-l??ines 這個(gè)庫來(lái)實(shí)現: const spli(′?ω?`)tLines = require('split-lines'); const fileContent = fs.readFileSync('exa??mple.txt', 'ut(′_ゝ`)f8'); const lines = splitLines(fileContent); for (let i = 0; i < lines.length; i++) {  cons(′?`*)ole.log(lines[i]); } // 注意這里需要先安裝 split-lines 這個(gè)庫才能使用它: npm install split-lines --save-dev
亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费 姚安县| 甘谷县| 沅陵县| 曲水县| 北海市| 高唐县| 通州市| 栾城县| 前郭尔| 长顺县| 汶上县| 庄浪县| 阜新市| 富宁县| 东台市| 云浮市| 大名县| 鱼台县| 南开区| 周口市| 通海县| 张家口市| 长垣县| 潮州市| 杂多县| 丰镇市| 凤阳县| 虞城县| 醴陵市| 盐源县| 九江市| 辉南县| 虎林市| 西城区| 五家渠市| 富蕴县| 鹤山市| 鄄城县| 太仆寺旗| 通渭县| 横峰县| http://444 http://444 http://444 http://444 http://444 http://444