node.js中的fs与path模块

前言

什么是Node.js?

Node.js 是一个开源和跨平台的 JavaScript 运行时环境

Node.js 在浏览器之外运行 V8 JavaScript 引擎,即 Google Chrome 的核心。

一、fs模块基础

1. 引入fs模块

javascript 复制代码
const fs = require('fs');

2. 同步与异步方法

fs模块提供了同步和异步两种操作方式:

  • 异步方法:通常带有回调函数,不会阻塞程序执行
  • 同步方法:方法名以Sync结尾,会阻塞程序直到操作完成

推荐优先使用异步方法,特别是在服务器环境中,以避免阻塞事件循环。

3. 常用文件操作方法

读取文件
javascript 复制代码
// 异步读取
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);
}
写入文件
javascript 复制代码
// 异步写入
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);
}
追加内容
javascript 复制代码
fs.appendFile('example.txt', '\n追加的内容', (err) => {
  if (err) throw err;
  console.log('内容已追加');
});
检查文件/目录是否存在
javascript 复制代码
fs.access('example.txt', fs.constants.F_OK, (err) => {
  console.log(err ? '文件不存在' : '文件存在');
});
文件状态
javascript 复制代码
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模块

javascript 复制代码
const path = require('path');

2. 常用路径操作方法

路径拼接
javascript 复制代码
const fullPath = path.join(__dirname, 'public', 'images', 'avatar.jpg');
console.log(fullPath); // 输出类似: /home/user/project/public/images/avatar.jpg
获取路径的各个部分
javascript 复制代码
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
路径解析
javascript 复制代码
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'
}
*/
路径规范化
javascript 复制代码
console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));
// 输出: /foo/bar/baz/asdf
相对路径计算
javascript 复制代码
console.log(path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'));
// 输出: ../../impl/bbb
相关推荐
无巧不成书02182 小时前
2026最新Next-AI-Draw-io全攻略:AI驱动专业图表生成,Docker/Node.js本地部署零踩坑指南
人工智能·docker·node.js·next-ai-draw-io
悟空瞎说5 小时前
我踩过的4个Node.js微服务经典Bug,用一个库彻底解决(2000字详解+可直接复用代码)
后端·node.js
捉鸭子10 小时前
某红书X-s X-s-common VMP逆向(算法还原)
python·web安全·网络安全·node.js·网络爬虫
freewlt10 小时前
Node.js 性能分析实战指南:从入门到精通
node.js
火乐暖阳8510510 小时前
Vue3+Node.js
vue.js·node.js·pnpm·koa2·myslq2
被巨款砸中10 小时前
从零到一:构建高效 Node.js 后端 API (Koa + Prisma 实战)
前端·javascript·vue.js·node.js·web
网络点点滴12 小时前
Node.js-填充模板
node.js
zhensherlock20 小时前
Protocol Launcher 系列:Trello 看板管理的协议自动化
前端·javascript·typescript·node.js·自动化·github·js
iNgs IMAC1 天前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
ZJY1321 天前
3-12:路由和重构
后端·node.js