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


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

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

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

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

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

    终端的结果:

    fs模块常用功能

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

    参数说明:

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

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

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

    代码演示:

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

    1. const fs=require("fs")
    2. fs.readFile("./test.txt",(err,data)=>{
    3. console.log(err,data.toString());
    4. })

    终端打印结果:

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

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

    参数说明:

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

    data:要写入的数据;

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

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

    代码演示:

    没有该文件时

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

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

     

     该文件夹已经存在时

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

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

     

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

    参数说明:

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

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

    代码演示:

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

     运行结果:

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

     

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

    参数说明:

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

    content:追加的内容

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

    代码演示:

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

    运行结果: 

     

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

    例如:

     

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

    参数说明:

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

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

    代码演示:

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

     运行结果:

     

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

    参数说明:

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

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

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

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

    代码演示:

    1. //重命名
    2. let oldpath=__dirname+"/test.txt"
    3. let newpath=__dirname+"/newtest.txt"
    4. fs.rename(oldpath,newpath,(err)=>{
    5. console.log("重命名成功");
    6. })
    7. //移动
    8. let oldpath1=__dirname+"/tes.txt"
    9. let newpath1=__dirname+"/newfile/tes.txt"
    10. fs.rename(oldpath1,newpath1,(err)=>{
    11. console.log("移动成功");
    12. })

    运行结果:

     

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

    参数说明:

    oldpath, 原文件的完整路径;

    newpath, 新文件的完整路径;

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

    代码演示:

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

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

     

  • 相关阅读:
    [C]详解C语言动态内存分配
    Towhee 每周模型
    es查询限制10000,使用scroll
    Apache 的配置与应用
    uniapp项目实践总结(二十七)苹果应用商店上架教程
    Essential Steps in Natural Language Processing (NLP)
    【云原生 | Kubernetes 系列】---Prometheus 数据高可用
    北斗导航 | ILS(仪表着陆系统)、MLS(微波着陆系统)和GBAS(地基增强系统)的性能对比
    QComboBox的信号
    [Spring Boot1]配置、视图、Web开发
  • 原文地址:https://blog.csdn.net/m0_59345890/article/details/126031016