Nodejs内置模块

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);
    });

如果 recursivetrue 则需要创建的文件已存在就不再抛出错误信息,为 false 或省略则会在控制台抛出文件已存在的错误信息

使用同步方式

const path = require('path');
const fs = require('fs');

fs.mkdir(path.join(__dirname, 'test'),
  { recursive: true }, (err) => {
    console.log('使用mkdir异步方式不可以省略这个回调函数');
  });
评论区
头像