首页 > 代码库 > 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学习--常用模块