重学Node.js系列(六)
前面学习到了文件系统模块fs
,它和路径模块path
,还有http模块(前面使用http模块实现过一个基础的服务器)都属于Node.js 内置 API 模块,其实前面学习文件系统模块都已经在使用路径模块了,今天来详细学习下路径模块,并结合文件系统模块实现一个简单文件操作案例。
路径模块(path)
path模块是Node.js官方提供的,用来处理路径的模块
引用路径模块
const path = require('path');
1. 路径拼接
path.join()
可以把多个路径片段拼接为完整的路径字符串。
语法格式: path.join([...paths])
// 拼接路径(..表示上层路径;.表示当前路径),在连接路径的时候会格式化路径
path.join('/foo', 'bar', 'baz/asdf', 'quux', '../../');
../
会抵消前面的路径,所以下图得到的路径拼接只拼接到baz(不要提供 ./
或 ../
开头的相对路径,防止路径动态拼接的问题)
2. 获取路径中的文件名
path.basename()
可以获取路径中最后一部分。
语法格式: path.basename(path[, ext])
参数说明: path - 必须参数,表示一个路径字符串; ext - 可选参数,表示文件扩展名
// 获取路径的最后一部分
path.basename('/foo/bar/baz/asdf/quux.html');
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
3. 获取路径中的文件扩展名
path.extname()
可以获取路径中的扩展名部分。
语法格式: path.extname(path)
// 获取扩展名称
path.extname('index.html'); //输出 .html
其它一些路径基本操作API:
文件操作案例(初始化目录结构)
- 创建一个main.js文件,写入以下代码
const path = require('path');
const fs = require('fs');
//(/转义)
let root = 'D:\\xm';
let fileContent = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>写入内容</div>
</body>
</html>
`;
// 初始化数据
let initData = {
projectName : 'mydemo',
data : [{
name : 'img',
type : 'dir'
},{
name : 'css',
type : 'dir'
},{
name : 'js',
type : 'dir'
},{
name : 'index.html',
type : 'file'
}]
}
// 创建项目
fs.mkdir(path.join(root,initData.projectName),(err)=>{
if(err) return;//如果错误,终止
// 创建子目录和文件
initData.data.forEach((item)=>{
if(item.type == 'dir'){
// 创建子目录 同步写法
fs.mkdirSync(path.join(root,initData.projectName,item.name));
}else if(item.type == 'file'){
// 创建文件并写入内容
fs.writeFileSync(path.join(root,initData.projectName,item.name),fileContent);
}
});
});
- 执行命令
node main.js
,就可以在D盘的xm文件夹下,得到下面的图上的文件目录结构
转载自:https://juejin.cn/post/7158452360283914270