nodejs--path路径模块

目录

1.1 引言

1.2 什么是 path 路径模块

1.3 path.join() 路径拼接

1.3 path.basename() 

1.4 path.extname()

1.5 path.dirname(path)--获取路径

1.6 path.isAbsolute(path)--判断是否是绝对路径

1.7 path.delimiter()--获取当前操作系统路径分隔符

1.8 path.sep()--获取当前路径环境变量分隔符

1.9  path.parse(path)--路径的格式化处理:

1.10 path.format(pathObject)--用于将对象转换成路径

 1.11 path.normalize(path)--规范化路径

1.12 path.relative(from, to)--计算相对路径

1.14 path.resolve([...paths])--解析路径

 


1.1 引言

在使用 fs 模块操作文件时,如果提供的操作路径是以 ./../ 开头的相对路径时,很容易出现路径动态拼接错误的问题。因为代码在运行的时候,会以 node 命令时所处的目录,动态拼接出被操作文件的完整路径

于是我们可以用绝对路径来代替相对路径,但是这样做又会出现移植性差、不利于维护的问题

因此我们可以利用 __dirname 来完美解决

示例:

let fs = require("fs");
let path = require("path");

// 拿到需要读取的文件路径  __dirname-表示当前文件所处的目录
let str = path.join(__dirname, "./readMe.txt");

//读取文件
// fs.readFile(__dirname + './readMe.txt', "utf8", function(err, data) { 或
fs.readFile(str, "utf8", function (err, data) {
    if (err) {
        throw new Error("读取文件失败");
    }
    console.log(data.toString());
});


1.2 什么是 path 路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求

封装了各种路径相关的操作和Buffer一样,NodeJS中的路径也是一个特殊的模块,不同的是Buffer模块已经添加到Global上了, 所以不需要手动导入,而Path模块没有添加到Global上, 所以使用时需要手动导入

path.join():将多个路径片段拼接成一个完整的路径字符串

path.basename():从路径字符串中,将文件名解析出来

path.extname():获取路径的扩展名

path.dirname():

......

使用方式:

const path = require("path");


1.3 path.join() 路径拼接

将多个路径片段拼接成一个完整的路径字符串

语法:path.join([...paths])

示例:

const path = require("path");

// 只有 ../ 会抵消前面的路径
const pathStr = path.join('/a','/b/c','../','./d','e');
console.log(pathStr);

const pathStr2 = path.join(__dirname,'./1.txt');
console.log(pathStr2);


1.3 path.basename() 

path.basename():可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名

语法:path.basename(path[,ext]);  返回路径中的最后一部分

path:必选参数,表示一个路径的字符串

ext:可选参数,表示文件扩展名

示例:

const path = require("path");

//定义文件的存放路径
const fpath = '/a/b/c/index.html';

// const fullName = path.basename(fpath);

// console.log(fullName);// index.html

const nameWithoutExt = path.basename(fpath,'.html');
console.log(nameWithoutExt);// index


1.4 path.extname()

获取路径的扩展名

语法:path.extname(path);

示例:

const path = require("path");

const fpath = '/a/b/c/index.html';

const fext = path.extname(fpath);
console.log(fext);// .html


1.5 path.dirname(path)--获取路径

用于获取路径中的目录, 也就是除了最后一个部分以外的内容 

// dirname用于获取路径中的目录, 也就是除了最后一个部分以外的内容
// let res = path.dirname('/a/b/c/d/index.html'); // /a/b/c/d
let res = path.dirname('/a/b/c/d'); // /a/b/c
console.log(res);


1.6 path.isAbsolute(path)--判断是否是绝对路径

isAbsolute用于判断路径是否是一个绝对路径

 注意点:

区分操作系统

在Linux操作系统中/开头就是绝对路径

在Windows操作系统中盘符开头就是绝对路径

在Linux操作系统中路径的分隔符是左斜杠 /

在Windows操作系统中路径的分隔符是右斜杠 \

// let res = path.isAbsolute('/a/b/c/d/index.html'); // true
// let res = path.isAbsolute('./a/b/c/d/index.html'); // false
// let res = path.isAbsolute('c:\\a\\b\\c\\d\\index.html'); // true
let res = path.isAbsolute('a\\b\\c\\d\\index.html'); // false
console.log(res);


1.7 path.delimiter()--获取当前操作系统路径分隔符

  windows是\ Linux是/

// path.delimiter用于获取当前操作系统环境变量的分隔符的
// 如果是在Linux操作系统中运行那么获取到的是 :
// 如果是在Windows操作系统中运行那么获取到的是 ;
console.log(path.delimiter); // ;


1.8 path.sep()--获取当前路径环境变量分隔符

path.sep用于获取当前操作系统中路径的分隔符的

如果是在Linux操作系统中运行那么获取到的是 左斜杠 /

如果是在Windows操作系统中运行那么获取到的是 右斜杠 \

path.sep  (windows中使用; linux中使用:)

console.log(path.sep); // \


1.9  path.parse(path)--路径的格式化处理:

path.parse(path): 用于将路径转换成对象

let obj = path.parse("/a/b/c/d/index.html");
console.log(obj);


1.10 path.format(pathObject)--用于将对象转换成路径

let obj = {
    root: '/',
    dir: '/a/b/c/d',
    base: 'index.html',
    ext: '.html',
    name: 'index'
};
let str = path.format(obj);
console.log(str);


 1.11 path.normalize(path)--规范化路径

path.normalize(path): 用于规范化路径

let res = path.normalize("/a//b///cd/index.html");
console.log(res); // \a\b\c\d\index.html


1.12 path.relative(from, to)--计算相对路径

path.relative(from, to): 用于计算相对路径

第一个参数: /data/orandea/test/aaa

第二个参数: /data/orandea/impl/bbb

/**
 * /data/orandea/test/aaa --> ../  --> /data/orandea/test
 * /data/orandea/test --> ../ --> /data/orandea
 * ..\..\impl\bbb
 */
let res = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
console.log(res); // ..\..\impl\bbb


1.14 path.resolve([...paths])--解析路径

path.resolve([...paths]): 用于解析路径

注意点: 如果后面的参数是绝对路径, 那么前面的参数就会被忽略

// let res = path.resolve('/foo/bar', './baz'); // /foo/bar/baz
// let res = path.resolve('/foo/bar', '../baz'); // /foo/baz
let res = path.resolve('/foo/bar', '/baz'); // /baz
console.log(res);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值