node基础之global全局对象与文件I / O

本文详细介绍了Node.js中的global全局对象,包括settimeout、setImmediate、setinterval等方法及其与浏览器的区别。此外,还深入讲解了文件I/O操作,如path模块的使用、fs模块的readFile、writeFile、copyFile、stat等方法,以及如何判断文件或目录、创建和删除目录等。最后,提到了使用nodemon进行Node.js应用的自动重启。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

global全局对象

global中常用的方法

  1. settimeout 延时器

  2. setImmediate(和延时器的效果差不多,但有本质区别)

  3. setinterval 计时器

    注意:以上三个和我们在浏览器端有所不同 node中返回的是一个对象而浏览器中返回的是一个数字

    **在这里插入图片描述
    浏览器中
    在这里插入图片描述

  4. console(这个就不多说了,上面也用到过)
    上面提到的四个 都是基于 JS的 V8引擎实现的

  5. __dirname 获取当前模块的所在目录
    dirname并不是全局对象global中的

  6. __filename 获取当前模块的文件路径

  7. Buffer

    Buffer对象可以与字符串之间相互转换。目前支持的字符串编码类型有如下这几种。

    ASCII
    UTF-8
    UTF-16LE/UCS-2
    Base64
    Binary
    Hex
    

    在这里插入图片描述

  8. process(以下是process包含的函数)

    cwd    返回当前nodejs进程的工作目录(绝对路径)
    exit   强制退出node进程
    argv   获取当前命令的所有参数
    platform  获取当前的操作系统版本号
    kill(id)  根据进程id去杀死进程
    env    获取环境变量对象
    

    拿exit举例:
    在这里插入图片描述

文件I / O

在node中,可以使用require()函数来加载模块。require函数使用一个参数,参数值可以带有完整路径的模块的文件名,也可以为模块名.当使用node中提供的模块时,在require函数中只需要指定模块名即可。

path

path模块提供了一些用于处理文件路径的小工具

//例如:如下是将路径合并,效果类似于字符串拼接
let fillname = path.resolve(__dirname,"./fill/name.txt")

其他方法:菜鸟教程中对path模块的总结

fs模块

fs模块用于对系统文件及目录进行读写操作。

  • 读:readFile()方法

    参数一:文件地址
    参数二:读取的编码格式
    参数三:回调函数

    例子:

    创建一个txt文本,内容为“我是文本”
    
    const fs = require("fs");
    const path=require("path");
    let filePath=path.resolve(__dirname,"./fill/name.txt");
    fs.readFile(filePath,"utf-8",(err,content)=>{
        console.log(content);
    })
    

    控制台打印:在这里插入图片描述
    文档内:在这里插入图片描述

  • 写:writeFile()方法
    参数一:文件地址
    参数二:写入的数据
    参数三:写入文件方式选项
    参数四:回调函数

    在上面已有name.txt文档的前提下,再进行操作
    
    const fs = require("fs");
    const path=require("path");
    let filePath=path.resolve(__dirname,"./fill/name.txt");
    fs.writeFile(filePath, '我是改写后的文档', (err, content) => {
        console.log("写入成功");
    })
    /* 也可以通过readFileSync读数据
    let file  = fs.readFileSync(fillname,'utf-8');
    console.log(file);
    */
    
    

    控制台:在这里插入图片描述

    文档内:在这里插入图片描述
    可以看到文档内容已被改变,但是之前的内容被覆盖了。我们可以通过文件写入方式来控制写入的方式
    修改代码:

    fs.writeFile(filePath,'加加加',{
        encoding:'utf-8',
        flag:'a' //a=append
    },(err,content)=>{
        console.log("写入成功");
    })
    
    

文档内:在这里插入图片描述

  • 复制文件:copyFile()方法 此方法可以被上面两种方法代替

    参数一:源文件地址
    参数二:复制文件地址(需要注意的是,路径后面要跟文件名,因为它的判断机制是是否有这个文件名,如果没有,则建立一个)
    参数三:回调函数

    例子:

    const fs = require("fs");
    const path=require("path");
    let filePath=path.resolve(__dirname,"./fill/name.txt");
    let copyPath = path.resolve(__dirname,"./copyPath/copy.txt");
    fs.copyFile(filePath,copyPath,(err,content)=>{
        console.log("复制成功");
    })
    

    通过readFile和writeFile联合使用对文件复制
    只不过这种方式需要提前先建立一个对应的类型的空文档,否则再写入的时候找不到文件,则无法写入

    const fs = require("fs");
    const path=require("path");
    let filePath=path.resolve(__dirname,"./fill/name.txt");
    let copyPath = path.resolve(__dirname,"./copyPath/newCopy.txt");
    fs.readFile(filePath,"utf-8",(err,content)=>{
        console.log(content);
        fs.writeFile(copyPath,content,(er,cont)=>{
            console.log("复制成功");
        });
    })
    

    复制文件不仅仅可以复制 txt文件,对图片、音频、视频等文件都可以复制,但有时候需要Buffer来辅助。

    stat

    参数一:文件路径
    参数二:回调函数
    作用:获取文件或目录的信息

    先定义一个experiment.txt文本
    
    const fs = require("fs");
    const path = require("path");
    
    let filePath=path.resolve(__dirname,"./experiment.txt");
    
    fs.stat(filePath,(err,content)=>{
        console.log(content);
    })
    

    控制台打印:
    在这里插入图片描述

	常用:

	size:占用字节(注意,现在一个中文字符占3个字节)
    atime:上次访问的时间
    mtime:上次文件内容被修改的时间
    ctime:上次文件状态被修改的时间
    birthtime:创建时间

isdirectory() 和 isFile()

前者是判断是否存在某个目录(文件夹)
后者是判断是否存在某个文件

官方定义:如果 fs.Stats 对象描述文件系统目录(文件),则返回 true。

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

let filePath=path.resolve(__dirname,"./experiment.txt");


fs.stat(filePath,(err,content)=>{
    console.log(content.isDirectory());
})

控制台打印:fasle
因为filePath路径是一个文件,而不是一个目录(文件夹),如果把isDirectory()方法换成isFile(),此处便是true

readdir

参数一:文件路径
参数二:回调函数

作用:获取目录中的子文件和目录(注意是子文件/目录,也就是下一级文件,不是所有后代文件
例子:定义了如下目录
在这里插入图片描述

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

let filePath=path.resolve(__dirname,"./");


fs.readdir(filePath,(err,content)=>{
    console.log(content);
})

控制台打印:可以看到并没有打印addTest.txt,因为只能获取下一层的子类
在这里插入图片描述

mkdir

参数一:文件路径
参数二:回调函数

作用:新建目录

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

let filePath=path.resolve(__dirname,"./newBuild");


fs.mkdir(filePath,(err,content)=>{
    console.log(content);
})

unlink

参数一:文件路径
参数二:回调函数

作用:删除指定路径文件

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

let filePath=path.resolve(__dirname,"./add/addTest.txt");


fs.unlink(filePath,(err,content)=>{
    console.log(content);
})

小提示

给node下载自动触发插件:
下载语法:npm install --global nodemon
运行语法:nodemon xxx(node代码的js文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值