Nodejs
path
路径操作
baename
返回文件名 如:index.js
let path = require('path');
let n = 'C:/Users/code/index.js';
console.log(path.basename(n)) //index.js
dirname
返回目录名 如:C:/Users/code
let path = require('path');
let n = 'C:/Users/code/index.js';
console.log(path.dirname(n)) //C:/Users/code
extname
返回文件后缀 如:.js
let path = require('path');
let n = 'C:/Users/code/index.js';
console.log(path.extname(n)) //.js
join
拼接路径 如:C:/Users/code/ + index.js = C:\Users\code\index.js
let path = require('path');
let n = 'C:/Users/code/';
let m = 'index.js'
console.log(path.join(n,m)) //C:\Users\code\index.js
format
将对象转换为字符串路径
let path = require('path');
let n = path.format({
dir: 'C:\\Users\\code',
base: 'index.js'
});
console.log(n) //C:\Users\code\index.js
parse
将字符串路径转换为对象
let path = require('path');
let n = 'C:/Users/code/index.js';
console.log(path.parse(n))
// 返回结果如下:
/*
{
root: 'C:/',
dir: 'C:/Users/code',
base: 'index.js',
ext: '.js',
name: 'index'
}
*/
__dirname
返回当前的文件的绝对路径
console.log(__dirname) //C:\Users\33111\Desktop\Demo
扩展
../
let path = require('path');
console.log(path.join('/foo', 'bar', 'quux'))
正常拼接:\foo\bar\quux
.
跟 ./
是返回当前路径
console.log(path.join('/foo', 'bar', 'quux','.'))
// \foo\bar\quux
console.log(path.join('/foo', 'bar', 'quux','./'))
// \foo\bar\quux\
而 ..
跟 ../
是返回上级路径
console.log(path.join('/foo', 'bar', 'quux','..'))
// \foo\bar
console.log(path.join('/foo', 'bar', 'quux','../'))
// \foo\bar\
fs
文件操作
readFile
读取文件内容 如:读取text.txt的内容
注意:路径文件记得加单位
let fs = require('fs');
fs.readFile('./text.txt',(err,data)=>{
console.log(data)
// 输出结果:<Buffer e5 88 98 e5 ae 87 e9 98 b3>
})
他的输出结果是: <Buffer e5 88 98 e5 ae 87 e9 98 b3>
二进制代码,并不是我们想要的结果。所以需要先 设置为utf-8模式
或者 转换为字符串
转换为正常文本
let fs = require('fs');
// 设置为utf-8模式
fs.readFile('./text.txt','utf-8',(err,data)=>{
console.log(data) //刘宇阳
})
// 或者用toString转换为字符串
fs.readFile('./text.txt',(err,data)=>{
console.log(data.toString()) //刘宇阳
})
- 它的参数第一个参数
err
是失败后执行 - 第二个参数
data
是成功执行,参数名可以自定义
读取成功
let fs = require('fs');
fs.readFile('./text.txt','utf-8',(err,data) => {
if(err){
return console.log('读取失败!')
}
console.log('读取成功') //读取成功
console.log(data) //刘宇阳
})
读取失败
let fs = require('fs');
// 把路径改错,使加读取失败
fs.readFile('./text.txt','utf-8',(err,data) => {
// 读取失败,err就有值 / 读取成功,err值就是null
// err有值就是true 没有值就是false
if(err){
return console.log('读取失败!') //读取失败
}
console.log('读取成功')
console.log(data)
})
writeFile
写入文件内容 如:修改text.txt的内容
let fs = require('fs');
fs.writeFile('./text.txt','Hello World!',()=>{})
也可以这样
let fs = require('fs');
let n = 'Hello World!';
fs.writeFile('./text.txt',n,()=>{})
整理成绩案例
将text.txt文件中的:小明=100 小王=98 小亮=97 小红=97 每个 等于号(=)
换成 冒号(:)
并且换行显示。
如下效果:
小明:100
小王:98
小亮:97
小红:97
代码实现
const fs = require('fs');
// 读取文件数据
fs.readFile('./text.txt','utf-8',function(err,data){
if(err) return console.log(err);
// 用于合并数据
let str = '';
// 将数据以空格转换为字符串
let arr = data.split(' ');
// 循环格式
arr.forEach(item=>{
str += item.split('=').join(':')+'\n'
})
// 写入文件数据
fs.writeFile('./text.txt',str,function (){})
})
existsSync
该方法用于检测指定路径中是否存在文件,它返回一个布尔值。存在则返回 true
,反之为 false
const fs = require('fs');
let fileExists = fs.existsSync(__dirname+'\\users.js');
console.log(fileExists);
mkdirSync
该方法用于给指定路径下创建一个新的文件夹,如下在当前目录下创建一个名叫 test
的文件夹
const path = require('path');
const fs = require('fs');
fs.mkdirSync(path.join(__dirname, 'test'),
{ recursive: true }, (err) => {
console.log(err);
});
如果 recursive
为 true
则需要创建的文件已存在就不再抛出错误信息,为 false
或省略则会在控制台抛出文件已存在的错误信息
使用同步方式
const path = require('path');
const fs = require('fs');
fs.mkdir(path.join(__dirname, 'test'),
{ recursive: true }, (err) => {
console.log('使用mkdir异步方式不可以省略这个回调函数');
});
希望明年能够实现月薪过万的目标,这也是我的目标 哈哈哈