global全局对象
global中常用的方法
-
settimeout 延时器
-
setImmediate(和延时器的效果差不多,但有本质区别)
-
setinterval 计时器
注意:以上三个和我们在浏览器端有所不同 node中返回的是一个对象而浏览器中返回的是一个数字
**
浏览器中
-
console(这个就不多说了,上面也用到过)
上面提到的四个 都是基于 JS的 V8引擎实现的
-
__dirname 获取当前模块的所在目录
dirname并不是全局对象global中的
-
__filename 获取当前模块的文件路径
-
Buffer
Buffer对象可以与字符串之间相互转换。目前支持的字符串编码类型有如下这几种。
ASCII UTF-8 UTF-16LE/UCS-2 Base64 Binary Hex
-
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文件)