两个全局变量__dirname和__filename 、fs模块常用功能进一步介绍

官方为我们提供了__dirname和__filename 这两个变量,注意他们的值是字符串。

__dirname:代表当前js文件所在目录的路径(绝对路径)

__filename:  代表当前js文件的路径(绝对路径)

演示一下:新建一个js文件,打印一下这两个变量。

console.log(__dirname);
console.log(__filename);

终端的结果:

fs模块常用功能

读取文件fs.readFile(path,(err,data)=>{})

参数说明:

path:读取文件的路径(可以是绝对路径,可以是相对路径);

err:读取失败返回的信息;

data:读取成功返回的二进制类型数据,我们可以通过toString()方法转换为字符串。

代码演示:

先同目录下创建一个test.txt,内容为测试文本的文本文件,我们再用readFile()读取。

const fs=require("fs")

fs.readFile("./test.txt",(err,data)=>{
    console.log(err,data.toString());
})

终端打印结果:

读取文件成功err返回null,data返回文件内容,因为用了toString()转换为了字符串,我们能看到测试文本这几个字,如果不用则打印的是二进制数据。

写入文件fs.writeFile(path,data,callback(err))

参数说明:

path:为我们要写入文件的路径;

data:要写入的数据;

callback(err):回调函数,写入文件失败时,err返回错误信息。

注意我们在写入文件时,如果已经该写入路径下已经存在该文件,那么我们新写的会覆盖掉原来的,如果没有就创建该文件。

代码演示:

没有该文件时

fs.writeFile("./newtxt.txt","新建txt",(err)=>{
    //如果失败返回错误信息
    console.log(err);
})

 运行js文件,这时文件夹下已成功创建了newtxt.txt

 

 该文件夹已经存在时

fs.writeFile("./newtxt.txt","我是第二次建立的txt",(err)=>{
    //如果失败返回错误信息
    console.log(err);
})

运行代码,可以看到文本的内容发生了改变

 

 删除文件 fs.unlink(path,callback(err))

参数说明:

path:删除文件的路径,为字符串

callback(err):回调函数,err删除文件时的错误信息,成功时err为null

代码演示:

fs.unlink("./newtxt.txt",(err)=>{
    console.log(err);
})

 运行结果:

可以看到上面写入文件的newtxt.txt已经被删除了。 

 

追加内容  fs.appendFile(path,content,callback(err))

参数说明:

path:追加内容文件的路径,为字符串的形式;

content:追加的内容

callback(err):回调函数,err为追加失败返回的错误信息,追加成功err为null

代码演示:

fs.appendFile("./test.txt","我是新增的内容",(err)=>{
    console.log(err);
})

运行结果: 

 

 如果path路径在文件夹中不存在,那么会自动给我们创建这个文件。

例如:

 

创建目录 fs.mkdir(path,callback(err))

参数说明:

path:创建目录的路径,格式也是字符串;

callback:回调函数,参数err为创建失败返回的错误信息;

代码演示:

fs.mkdir(__dirname+"/newfile",(err)=>{
    //dirname为node文件夹的路径
    console.log(err);
})

 运行结果:

 

移动/重命名文件或目录 fs.rename(oldpath,newpath,callback(err))

参数说明:

oldpath, 原目录/文件的完整路径及名;

newpath, 新目录/文件的完整路径及名;如果新路径与原路径相同,而只文件名不同,则是重命名

callback(err), 操作完成回调函数;err操作失败对象

移动文件有一个bug:新路径和旧路径必须是同一个根盘

代码演示:


//重命名
let oldpath=__dirname+"/test.txt"
let newpath=__dirname+"/newtest.txt"
fs.rename(oldpath,newpath,(err)=>{
    console.log("重命名成功");
})

//移动
let oldpath1=__dirname+"/tes.txt"
let newpath1=__dirname+"/newfile/tes.txt"
fs.rename(oldpath1,newpath1,(err)=>{
    console.log("移动成功");
})

运行结果:

 

 拷贝文件 fs.copyFile(oldpath, newpath, callback(err) )

参数说明:

oldpath, 原文件的完整路径;

newpath, 新文件的完整路径;

callback(err), 操作完成回调函数;err操作失败对象

代码演示:

let oldpath=__dirname+"/newtest.txt"
let newpath=__dirname+"/newfile/newtest.txt"
fs.copyFile(oldpath,newpath,(err)=>{
    console.log("拷贝成功");
})

 运行结果:两个文件中的内容也是一样的

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值