当前位置: 首页 > news >正文

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.dtcms.com/a/295327.html

相关文章:

  • 04.建造者模式的终极手册:从快餐定制到航天飞船的组装哲学
  • React+threejs两种3D多场景渲染方案
  • STM32 HAL库 HAL_TIM_OC_Stop函数详细解释
  • 期待更好的发展
  • 文件管理困境如何破?ZFile+cpolar打造随身云盘新体验
  • 亲测有效:EPLAN导出CAD图纸,DWG文件里的图纸复制粘贴出错和无法编辑的解决方法
  • EIDE 创建基于STM32-HD的项目快速创建流程
  • 精通Python PDF裁剪:从入门到专业的三重境界
  • 回调后门 函数
  • 微信格式插件 建的文件位置
  • 边缘智能体:轻量化部署与离线运行
  • MIT线性代数02_矩阵消元
  • C语言实现BIOS定义的WMI调用
  • NumPy 线性代数
  • 分布式推客系统开发全解:微服务拆分、佣金结算与风控设计
  • Sklearn 机器学习 数值标准化
  • 变量和函数底层工作原理
  • Mysql常用武功招式
  • 大脑各脑区功能解析:从痛觉处理到动作执行的协作机制
  • runc源码解读(一)——runc create
  • 技术赋能与体验升级:高端网站建设的核心要义
  • 【VSCode】复制到下一行快捷键
  • SparkSQL 子查询 IN/NOT IN 对 NULL 值的处理
  • 【分布式锁】什么是分布式锁?分布式锁的作用?
  • Windows计算器项目全流程案例:从需求到架构到实现
  • 宝塔通过docker部署JupyterHub指南【常见错误处理】
  • 深入解析文件操作(下)- 文件的(顺序/随机)读写,文件缓冲区,更新文件
  • 【AI】Jupyterlab中数据集的位置和程序和Pycharm中的区别
  • 20-ospf技术
  • MIT线性代数01_方程组的几何解释