官方为我们提供了__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("拷贝成功");
})
运行结果:两个文件中的内容也是一样的