首页 > 代码库 > node学习--常用模块
node学习--常用模块
Node的用处在于它本身提供的一系列的功能模块,用于与操作系统互动。常用内置模块如下:
path:处理文件路径
fs: 操作文件系统
child_process: 新建子进程
util: 提供一系列的实用小工具
http: 提供HTTP服务器功能
url:用于解析URL
querystring:解析URL中的查询字符串
crypto:提供加密和解密功能
注:包名如果跟内置模块重名,会优先加载内置模块,最好不要重名
在D:nodejs/node/1.js 新建一个1.js文件
1.在path文件操作的过程中,都必须使用物理路径(绝对路径)
常用的方法:
.join() 拼合路径
举例:
const path = require("path"); const temp = path.join(‘/bar‘,‘foor‘,‘/read/user‘); console.log(temp); // 输出 \bar\foor\read\user const temp1 = path.join(__dirname,‘李白.txt‘); // __dirname 这个js文件所在的路径,不包括 /fileName.js 这部分 console.log(temp1); //输出 D:\nodejs\node\李白.txt
.basename() 获取文件路径下这个文件的名字
const temp1 = path.join(__dirname,‘李白.txt‘); console.log(path.basename(temp1)); //输出 李白.txt console.log(path.basename(temp1,‘.txt‘)) // 输出不带后缀名的文件名 输出 李白
其实相当于切掉最后一块
console.log(path.basename(temp1,‘t‘)) //输出 李白.tx
属性 .delimiter 获取不同操作系统中默认的路径分隔符 windows是; Linux是:
const path = require("path");
console.log(path.delimiter); //这里用windows 输出为 ;
//process.env 获取环境变量 ,其中有个path对象,得到环境变量的路径将其分隔 console.log(process.env.PATH.split(path.delimiter));
.dirname() .extname()
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); //获取文件目录名称 console.log(path.dirname(temp1)); //输出 D:\nodejs\node //获取文件中的扩展名 console.log(path.extname(temp1)); //输出 .txt
.parse() 将 一个路径字符串转化为一个对象(包含文件目录,文件名,扩展名)
.format() 将文件对象转换为字符串
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); console.log(path.parse(temp1));
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); const obj = path.parse(temp1); console.log(path.format(obj));
isAbsolute() 判断一个路径是不是绝对路径,返回值是true/false
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); console.log(path.isAbsolute(temp1)); //true console.log(path.isAbsolute("../etc/isAbsolute")); //false
2.文件操作 fs
readFile() 异步读取文件 readFile()
读取文件时没有指定编码默认读取的是一个Buffer(缓冲区),缓冲区就是内存中操作数据的容器,通过缓存区可以很方便的操作二进制数据,而且大文件操作时必须有缓存区。因为在Node中操作数据、网络通信是没有办法完全以字符串的方式操作的,所以用node实现了缓存区。
举例:
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); const fs = require(‘fs‘); fs.readFile(temp1,‘utf-8‘,(error,data) => { //加上编码,以文本方式读取,不会输出16进制 console.log(data); });
文件编码:windows 默认是gbk编码,但是 node不支持,统一使用utf-8编码
文件太大,读文件会出现卡顿,可以使用readline 模块
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); const fs = require(‘fs‘); const readline = require(‘readline‘);
//以流的方式读取文件 let streamReader = fs.createReadStream(temp1); let data = ‘‘; streamReader.on(‘data‘,(chunk) => { //chunk只是文档的一个片段,不完整 data += chunk.toString(); }); streamReader.on("end",() => { //通知你已经结束了,此时data是完整的 console.log(data); })
输出为:
单行读取文件
const path = require("path"); const temp1 = path.join(__dirname,‘李白.txt‘); const fs = require(‘fs‘); const readline = require(‘readline‘); let streamReader = fs.createReadStream(temp1); //利用readline 读取 let rl = readline.createInterface({ input:streamReader }); rl.on("line",(line) => { console.log(`单行的内容为:${line}`); })
输出为:
node学习--常用模块