node.js中的fs與path模塊

前言

什么是Node.js?

Node.js 是一個開源和跨平臺的 JavaScript 運行時環境
Node.js 在瀏覽器之外運行 V8 JavaScript 引擎,即 Google Chrome 的核心。
在這里插入圖片描述

一、fs模塊基礎

1. 引入fs模塊

const fs = require('fs');

2. 同步與異步方法

fs模塊提供了同步和異步兩種操作方式:

  • 異步方法:通常帶有回調函數,不會阻塞程序執行
  • 同步方法:方法名以Sync結尾,會阻塞程序直到操作完成

推薦優先使用異步方法,特別是在服務器環境中,以避免阻塞事件循環。

3. 常用文件操作方法

讀取文件
// 異步讀取
fs.readFile('example.txt', 'utf8', (err, data) => {if (err) throw err;console.log(data);
});// 同步讀取
try {const data = fs.readFileSync('example.txt', 'utf8');console.log(data);
} catch (err) {console.error(err);
}
寫入文件
// 異步寫入
fs.writeFile('example.txt', 'Hello Node.js', (err) => {if (err) throw err;console.log('文件已保存');
});// 同步寫入
try {fs.writeFileSync('example.txt', 'Hello Node.js');console.log('文件已保存');
} catch (err) {console.error(err);
}
追加內容
fs.appendFile('example.txt', '\n追加的內容', (err) => {if (err) throw err;console.log('內容已追加');
});
檢查文件/目錄是否存在
fs.access('example.txt', fs.constants.F_OK, (err) => {console.log(err ? '文件不存在' : '文件存在');
});
文件狀態
fs.stat('example.txt', (err, stats) => {if (err) throw err;console.log(`文件大小: ${stats.size}字節`);console.log(`是文件嗎? ${stats.isFile()}`);console.log(`是目錄嗎? ${stats.isDirectory()}`);
});

二、path模塊詳解

1. 引入path模塊

const path = require('path');

2. 常用路徑操作方法

路徑拼接
const fullPath = path.join(__dirname, 'public', 'images', 'avatar.jpg');
console.log(fullPath); // 輸出類似: /home/user/project/public/images/avatar.jpg
獲取路徑的各個部分
const filePath = '/home/user/project/src/app.js';console.log(path.dirname(filePath)); // /home/user/project/src
console.log(path.basename(filePath)); // app.js
console.log(path.extname(filePath)); // .js
路徑解析
const parsedPath = path.parse('/home/user/project/src/app.js');
console.log(parsedPath);
/*
{root: '/',dir: '/home/user/project/src',base: 'app.js',ext: '.js',name: 'app'
}
*/
路徑規范化
console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));
// 輸出: /foo/bar/baz/asdf
相對路徑計算
console.log(path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'));
// 輸出: ../../impl/bbb

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91071.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91071.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91071.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 靜態類_靜態方法_靜態字段(static 聲明靜態的關鍵字 )

靜態類里面的所有成員都必須得是靜態的,是不能被實例化的(不能用對象調用),不能在靜態類中聲明實例(非靜態)字段 屬性 方法 靜態方法中也只能訪問靜態字段, 普通方法中不管數據是不是靜態都能使用1、定義一個靜態類 //…

MRDIMM對服務器總體擁有成本(TCO)影響的系統性分析

以下是針對MRDIMM對服務器總體擁有成本(TCO)影響的系統性分析,結合技術特性與經濟性指標:一、MRDIMM降低TCO的核心機制帶寬效率提升 MRDIMM通過數據緩沖器實現雙Rank并行傳輸,單次數據傳輸量從標準RDIMM的64字節提升至…

c# openxml 打開加密 的word讀取內容

using System; using System.IO; using System.Linq; using System.Text; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing;/// <summary> /// 使用OpenXML獲取文檔內容&#xff0c;替代Aspose方式…

【SpringAI實戰】ChatPDF實現RAG知識庫

一、前言 二、實現效果 三、代碼實現 3.1 后端代碼 3.2 前端代碼 一、前言 Spring AI詳解&#xff1a;【Spring AI詳解】開啟Java生態的智能應用開發新時代(附不同功能的Spring AI實戰項目)-CSDN博客 二、實現效果 實現一個非常火爆的個人知識庫AI應用&#xff0c;ChatPDF…

Qt小組件 - 8 圖片瀏覽器

一個自制的圖片瀏覽器&#xff0c;如果不想安裝qfluentwidgets&#xff0c; CommandBarView可以使用QWidgetQPushButton替代安裝 qfluentwidgets pip install PySide6-Fluent-Widgets[full]代碼示例 # coding: utf-8 from typing import Unionfrom PySide6.QtCore import Qt, Q…

R study notes[1]

文章目錄introducing to Rreferencesintroducing to R R is an integrated suite involved data handling,storage facility,calculations on arrays,tools for data analysis and so on.running the command R in the terminal of OS can start R software.in R terminal ,to…

由于主庫切換歸檔路徑導致的 Oracle DG 無法同步問題的解決過程

由于主庫切換歸檔路徑導致的 Oracle DG 無法同步問題的解決過程 在上一篇文章中&#xff0c;由于 Oracle 數據庫的歸檔日志空間耗盡導致客戶端無法連接數據庫。在解決的過程中臨時修改了歸檔路徑。后來通過修改參數db_recovery_file_dest_size的值解決了問題。 但該操作導致DG無…

密碼學與加密貨幣:構建去中心化信任的技術基石與未來挑戰

密碼學是加密貨幣的技術基石&#xff0c;兩者通過數學原理構建去中心化信任體系。以下從技術原理、應用場景及未來挑戰三方面展開分析&#xff1a;一、密碼學基礎&#xff1a;加密貨幣的安全基石非對稱加密體系公鑰與私鑰&#xff1a;基于橢圓曲線密碼學&#xff08;ECC&#x…

用于 Web 認證的 抗量子簽名——ML-DSA 草案

1. 引言 本文描述了在 Web Authentication (WebAuthn) 中實現無密碼認證&#xff08;Passwordless authentication&#xff09;的方法&#xff0c;該方法使用模塊格&#xff08;Module-Lattice&#xff09;為基礎的數字簽名標準&#xff08;ML-DSA&#xff09;&#xff0c;即 …

ubuntu18.04解壓大的tar.gz文件失敗

1. 問題描述 我在vmware的虛擬機裝有petalinux環境&#xff0c;需要解壓downloads_2020.2.tar.gz這個大的壓縮包文件&#xff0c;但是總是失敗&#xff0c;而且過程很漫長 tar: downloads/git2/github.com.vim.vim.git/objects/pack/pack-f7f2e2add0c8972a9141b557ef725c38069…

App拉起:喚醒即達,告別繁瑣操作

在移動互聯網進入存量競爭的今天&#xff0c;“讓用戶少點一次、少等一秒”往往意味著20%以上的轉化率差異。openinstall把這套體驗總結成一套可落地的App拉起方案&#xff1a;一套SDK一組鏈接跳轉規則一個可自定義的落地頁&#xff0c;就能把Web→App的整條動線縮成一次點擊。…

開發指南125-HTML DOM事件

1、onload和onunload在頁面或某個元素加載完成后或離開后觸發事件。2、onchange用于在元素的值發生變化時觸發事件。一般用于<input>, <select>, <textarea>等元素3、onfocus 和 onblur激活或失去焦點時觸發4、onmouseover 和 onmouseout鼠標移入或移除時觸發…

使用redis 作為消息隊列時, 如何保證消息的可靠性

使用Redis作為消息隊列時&#xff0c;如何保證消息的可靠性 在分布式系統中&#xff0c;消息隊列扮演著不可或缺的角色&#xff0c;它能夠有效地實現服務間的解耦和異步通信。Redis憑借其出色的性能&#xff0c;常常被用作輕量級的消息隊列。然而&#xff0c;Redis本質上是一個…

CentOS7 安裝和配置教程

CentOS7 安裝和配置教程第一部分&#xff1a;安裝準備1. 下載CentOS 7鏡像2. 創建安裝介質第二部分&#xff1a;安裝步驟1. 在VMeare上安裝CentOS-7-x86_64-Minimal2. 安裝配置3. 安裝過程第三部分&#xff1a;初始配置1. 首次啟動設置2. 網絡配置3. 防火墻配置第四部分&#x…

clock_getres系統調用及示例

39. clock_getres - 獲取時鐘精度 函數介紹 clock_getres系統調用用于獲取指定時鐘的精度&#xff08;分辨率&#xff09;。它返回時鐘能夠表示的最小時間間隔。 函數原型 #include <time.h>int clock_getres(clockid_t clk_id, struct timespec *res);功能 獲取指定時鐘…

MCU+RTOS調試

1. 引言在做項目時&#xff0c;百分之三十的時間寫代碼&#xff0c;還有百分之70的時間用于調試。本期將以Keil為例進行調試章節的講解&#xff0c;目的在于做出一個標準化的調試步驟&#xff0c;方便大家學習如何調試代碼。內容分為基礎調試、中級調試及進階調試三部分&#x…

Redis的數據淘汰策略是什么?有哪些?

1.監測設置了TTL的數據volatile-lru&#xff1a;淘汰最近最少使用的數據volatile-lfu&#xff1a;淘汰最近使用次數最少的數據volatile-ttl&#xff1b;淘汰將要過期的數據volatile-random&#xff1a;隨機淘汰2.監測全庫數據allkeys-lru&#xff1a;淘汰最近最少使用的數據all…

相控陣波束躍度指向誤差Matlab仿真

波束躍度影響&#xff1a;TR芯片移相器位數、陣元數量、校準后陣元初始相位、TR芯片移相器精度、波控計算精度等。用MATLAB進行TR芯片移相器位數、陣元數量對指向誤差進行仿真。 close all; %線陣波束躍度仿真 20250726 %beam displacement % 波束躍度影響&#xff1a;TR芯片移…

板凳-------Mysql cookbook學習 (十二--------6)

MySQL 8 導入二進制文件(trailer.ogv)操作指南 在MySQL中導入二進制文件(如trailer.ogv視頻文件)通常有幾種方法&#xff0c;我將詳細介紹每種方法的操作步驟。 方法一&#xff1a;使用LOAD_FILE函數導入BLOB字段 這是最直接的方法&#xff0c;適合中小型二進制文件。sql - 1. …

昇思學習營-【模型推理和性能優化】學習心得_20250730

一、權重的加載 模型包含兩部分&#xff1a; base model 和 LoRA adapter 其中base model的權重在微調時被凍結&#xff0c; 推理時加載原權重即可&#xff0c;LoRA adapter可通過PeftModel.from_pretrained進行加載。 二、啟動推理 通過model.generate&#xff0c;啟動推理…