欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js進(jìn)行文件讀取與復(fù)制的系統(tǒng)總結(jié)

 更新時(shí)間:2025年04月17日 09:50:32   作者:傻小胖  
這篇文章主要為大家詳細(xì)介紹了Node.js中文件讀取與復(fù)制相關(guān)內(nèi)容的系統(tǒng)總結(jié),包括 同步讀取,異步讀取,復(fù)制操作等,有需要的小伙伴可以跟隨小編一起了解下

Node.js 文件讀取與復(fù)制相關(guān)內(nèi)容的系統(tǒng)總結(jié),包括 同步讀取、異步讀取、流式讀取、復(fù)制操作、兩者對(duì)比及內(nèi)存測(cè)試。

一、Node.js 文件讀取方式總結(jié)

Node.js 使用 fs(文件系統(tǒng))模塊進(jìn)行文件操作:

1.同步讀?。˙locking)

const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf-8');
console.log(data);

? 優(yōu)點(diǎn):邏輯簡(jiǎn)單,適合初始化配置、命令行工具等無需并發(fā)場(chǎng)景。

?缺點(diǎn):阻塞線程,讀取大文件會(huì)卡住整個(gè)應(yīng)用。

當(dāng)然可以!下面是一個(gè)使用 Node.js 同步方式進(jìn)行文件復(fù)制的完整例子,先同步讀取文件內(nèi)容,再同步寫入到目標(biāo)文件。

示例:使用 fs.readFileSync + fs.writeFileSync 實(shí)現(xiàn)文件復(fù)制

const fs = require('fs');

try {
  // 同步讀取源文件內(nèi)容
  const data = fs.readFileSync('source.txt', 'utf-8');

  // 同步寫入到目標(biāo)文件
  fs.writeFileSync('target.txt', data);

  console.log('文件復(fù)制成功 ?');
} catch (err) {
  console.error('復(fù)制失敗 ?', err);
}

說明:

  • fs.readFileSync(path, encoding):阻塞方式讀取文件內(nèi)容
  • fs.writeFileSync(path, data):阻塞方式將內(nèi)容寫入文件
  • 適合小型文本文件復(fù)制(例如:配置文件、日志等)

注意:

會(huì)阻塞事件循環(huán),若文件大或復(fù)制頻繁,不適合用在服務(wù)端生產(chǎn)環(huán)境。

大文件建議使用流式復(fù)制方式。

2. 異步讀取(Non-blocking)

const fs = require('fs');
fs.readFile('file.txt', 'utf-8', (err, data) => {
  if (err) throw err;
  console.log(data);
});
  • ? 優(yōu)點(diǎn):非阻塞、適合高并發(fā),不會(huì)卡住主線程。
  • ?缺點(diǎn):邏輯較復(fù)雜,需使用回調(diào)、Promise 或 async/await。

3. 流式讀?。⊿tream)

const fs = require('fs');
const readStream = fs.createReadStream('file.txt', 'utf-8');

readStream.on('data', chunk => {
  console.log('讀取塊:', chunk);
});

readStream.on('end', () => {
  console.log('讀取完成');
});
  • ? 優(yōu)點(diǎn):適合讀取大文件、低內(nèi)存消耗
  • ?缺點(diǎn):實(shí)現(xiàn)復(fù)雜,處理邏輯需分塊處理。

二、讀取場(chǎng)景對(duì)比

方式適合場(chǎng)景特點(diǎn)
同步讀取小文件、本地 CLI 工具等簡(jiǎn)單,阻塞線程
異步讀取Web 服務(wù)、文件上傳非阻塞,高性能
流式讀取視頻、大型日志、備份等節(jié)省內(nèi)存,分塊

三、Node.js 文件復(fù)制方式

1. 同步復(fù)制

const fs = require('fs');
fs.copyFileSync('source.txt', 'target.txt');

? 簡(jiǎn)單,適合少量小文件。

?阻塞線程,大量并發(fā)時(shí)不可用。

2. 流式復(fù)制(推薦)

const fs = require('fs');
const readStream = fs.createReadStream('source.txt');
const writeStream = fs.createWriteStream('target.txt');

readStream.pipe(writeStream);

? 非阻塞,適合大文件。

? 邊讀邊寫,內(nèi)存占用低。

? 無法輕松控制復(fù)制進(jìn)度或中斷。

四、復(fù)制方式對(duì)比

方法內(nèi)存占用性能使用場(chǎng)景
同步復(fù)制小型項(xiàng)目、工具類
流式復(fù)制服務(wù)端、大文件

五、內(nèi)存占用測(cè)試示例

可以通過 process.memoryUsage() 查看 Node.js 內(nèi)存使用:

console.log(process.memoryUsage());

示例:對(duì)比讀取一個(gè) 500MB 文件時(shí)的內(nèi)存變化:

// 流式讀取內(nèi)存較低
const stream = fs.createReadStream('bigfile.txt');
stream.on('data', chunk => {
  console.log(process.memoryUsage().heapUsed);
});

// readFileSync 讀取整個(gè)文件占用大
const content = fs.readFileSync('bigfile.txt');
console.log(process.memoryUsage().heapUsed);

總結(jié)重點(diǎn)

功能同步異步流式
阻塞? 是? 否? 否
內(nèi)存消耗? 高?? 中? 低
實(shí)現(xiàn)復(fù)雜度? 簡(jiǎn)單?? 中等? 高
適合場(chǎng)景啟動(dòng)、工具Web 服務(wù)大文件處理

到此這篇關(guān)于Node.js進(jìn)行文件讀取與復(fù)制的系統(tǒng)總結(jié)的文章就介紹到這了,更多相關(guān)Node.js文件讀取與復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node+axios實(shí)現(xiàn)下載外網(wǎng)文件到本地

    node+axios實(shí)現(xiàn)下載外網(wǎng)文件到本地

    這篇文章主要為大家介紹了node+axios實(shí)現(xiàn)下載外網(wǎng)文件到本地示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 關(guān)于Node.js中頻繁修改代碼重啟服務(wù)器的問題

    關(guān)于Node.js中頻繁修改代碼重啟服務(wù)器的問題

    這篇文章主要介紹了關(guān)于Node.js中頻繁修改代碼重啟服務(wù)器的問題,本文給大家分享解決辦法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • node pnpm修改默認(rèn)包的存儲(chǔ)路徑(操作方法)

    node pnpm修改默認(rèn)包的存儲(chǔ)路徑(操作方法)

    PNPM是一個(gè)新的包管理工具,也是NPM的另一個(gè)替代方案,與NPM不同,PNPM使用符號(hào)鏈接(symlink)而不是復(fù)制文件來安裝包,這篇文章主要介紹了node pnpm修改默認(rèn)包的存儲(chǔ)路徑,需要的朋友可以參考下
    2024-05-05
  • node.js中npm包管理工具用法分析

    node.js中npm包管理工具用法分析

    這篇文章主要介紹了node.js中npm包管理工具用法,結(jié)合實(shí)例形式分析了node.js中npm包管理工具查看、安裝、更新、卸載等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • node.js利用express自動(dòng)搭建項(xiàng)目的全過程

    node.js利用express自動(dòng)搭建項(xiàng)目的全過程

    這篇文章主要給大家介紹了關(guān)于node.js利用express自動(dòng)搭建項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 詳解nodejs 文本操作模塊-fs模塊(二)

    詳解nodejs 文本操作模塊-fs模塊(二)

    這篇文章主要介紹了詳解nodejs 文本操作模塊-fs模塊(二),主要包括文件的讀寫操作,有興趣的可以了解一下。
    2016-12-12
  • 手把手教你用Node.js爬蟲爬取網(wǎng)站數(shù)據(jù)的方法

    手把手教你用Node.js爬蟲爬取網(wǎng)站數(shù)據(jù)的方法

    這篇文章主要介紹了手把手教你用Node.js爬蟲爬取網(wǎng)站數(shù)據(jù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Express中全局中間件與局部中間件的使用

    Express中全局中間件與局部中間件的使用

    本文介紹了Express框架中的全局中間件與局部中間件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 使用NVM管理Node版本的詳細(xì)教程

    使用NVM管理Node版本的詳細(xì)教程

    Node Version Manager(NVM)是一個(gè)非常流行的工具,用于在同一個(gè)系統(tǒng)上管理多個(gè) Node.js 版本,NVM 允許你安裝、使用和切換不同的 Node.js 版本,這對(duì)于開發(fā)人員來說非常有用,本文給大家介紹了使用NVM管理Node版本的詳細(xì)教程,需要的朋友可以參考下
    2025-02-02
  • autojs的Node.js正確退出腳本示例

    autojs的Node.js正確退出腳本示例

    這篇文章主要為大家介紹了autojs的Node.js正確退出腳本示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評(píng)論