node.js核心模块基础(二)

node.js的核心模块

1fs-文件系统模块常见的方法

readFile(),readFileSync()

1)readFile方法用于异步读取数据。
例:
fs.readFile(’./01.txt’, function (err, buffer) {
if (!err) {
console.log(“读取成功”)
}
});
2)readFileSync方法用于同步读取文件,返回一个字符串。

writeFile(),writeFileSync()

writeFile()异步写入(会覆盖原有类容)

fs.writeFile('写入文件名', '写入字符串', '文件编码', callback);

writeFileSync()同步写入

fs.writeFileSync(01.txt, "nihao", 'utf8');

appendFile(),appendFileSync()

1)appendFile()异步追加

const fs = require("fs"); 
fs.appendFile("01.txt", " world", err => {    
if (!err) {        
fs.readFile("3.txt", "utf8", (err, data) => {           
 console.log(data);  });    
 }});

2)appendFileSync()同步追加

fs.appendFileSync("01.txt", " 你好");

copyFile(),copyFileSync()

copyFile()异步拷贝

 fs.copyFile("1.txt", "2.txt", (callback)//将1.txt的内容拷贝到2.txt

copyFileSync()同步拷贝

fs.copyFileSync("1.txt", "2.txt");

unlink(),unlinkSync()

unlink()异步删除文件操作

fs.unlink("E://a/inde.js");

unlinkSync()同步删除文件操作

扫描二维码关注公众号,回复: 11590965 查看本文章
fs.unlinkSync("E://a/inde.js");

open()

open()异步打开文件

fs.open("1.txt", "r", (err, fd) => {        
console.log("打开成功");   
 });

close()

 close()异步关闭文件操作
 const fs = require("fs"); 
 fs.open("1.txt", "r", (err, fd) => {    f
 s.close(fd, err => {        
 console.log("关闭成功");    
 });
 });

read()

read()异步读取文件操作

fs.readFile('./b.js', 'utf-8', (err, doc) => {
     console.log(err);
    console.log(doc);
})

write()

write()异步写入文件操作

 fs.writeFile('./demo.txt', '即将要写入的内容', err => {
     if (err != null) {
         console.log(err);
         return;
    }

文件目录操作方法

创建文件目录

1)mkdirSync()同步创建文件目录

fs.mkdirSync("E://a/b/c");

2)mkdir()异步创建文件目录

fs.mkdir("E://a/b/c", err => {   
 if (!err) console.log("创建成功");
 }); 
 

读取文件目录

1)readdirSync()同步读取文件目录

let data = fs.readdirSync("E://a/b");

2)readdir()异步读取文件目录

fs.readdir("E://a/b", (err, data) => {    
if (!err) console.log(data);
});

删除文件目录

1) rmdirSync()异步删除文件目录

fs.rmdirSync("E://a/b");    //删除a目录下的b目录

2)rmdir同步删除文件目录

fs.rmdir("E://a/b", err => {    
if (!err) console.log("删除成功");
});

创建多个目录和文件并写入内容

// 定义一个url地址
let url='E:\\project';
const path=require('path');const fs=require('fs');
// 创建  项目 路径  E:\\project\\mydemofs.mkdir(path.join(url,initDat.projectName),  (err)=>{    
if(err){          
return;   
// 出错  直接终止程序    
}    // 创建子目录    
initDat.data.forEach((item)=>{        
if(item.type=='dir'){            
 fs.mkdirSync(path.join(url,initDat.projectName,item.name));        
 }else if(item.type=='file'){            
 // 创建文件 并写入内容
 fs.writeFileSync(path.join(url,initDat.projectName,item.name),fileContent);        }    })})

2buffer模块

创建多个目录和文件并写入内容

buffer模块不用引入可以直接使用。

let buf=new Buffer(5);//定义了5个字节数的buffer字节数组
let buf=Buffer.from('hello');//定义了一个hello的字节数组
buffer的静态方法
console.log(Buffer.isEncoding('utf8'))    //判断一个buffer字节数组的编码是否是utf8
console.log(Buffer.isEncoding('GB2312'))
 let buf=Buffer.from('hello');
 console.log(Buffer.isBuffer(buf));    //判断buffer的类型
 console.log(Buffer.isBuffer({}));  
 let buf=Buffer.from('中国','ascii');
 console.log(Buffer.byteLength(buf));   //字节长度
// // 注意:  utf-8  的编码格式  一个汉字   3个字节// // 注意:  ascii  的编码格式  一个汉字   1个字节
 console.log(buf.toString());   //buffer转换为字符串
 // 对于汉字  不允许 使用这种编码 
// concat()   将一组Buffer对象合并为一个Buffer 对象
buffer的实例方法
 let buf=Buffer.alloc(5);
 buf.write('hello',2,2);//从索引为2的开始写入,写2位
 console.log(buf)
 let  buf=Buffer.from('hello');
 let  buf1=buf.slice();     
// console.log(buf===buf1);  //存放的路径不等
// false
// let  buf=Buffer.from('hello');
// let  buf1=buf.slice(2,3);    //不包含结束位置
// console.log(buf1.toString());   //包含起始包含结尾
// const buf=Buffer.from('hello');
// const json=JSON.stringify(buf)     //将一个buffer对象转换成一个JSON字符串
// console.log(json);// 转换为 十进制

3path模块

path模块的使用需要引入

const path=require('path');
console.log(__dirname);  //获取当前文件下的绝对路径
console.log(path.dirname('abc/qqq/www/abc.txt'));   //abc/qqq/www
console.log(path.dirname('abc/qqq/www/abc'));       //abc/qqq/www
console.log(path.extname('index.html'));  //获取文件的扩展名.html

路径的格式化处理:

// 路径的格式化处理
// path.format()   obj==>string
// path.parse()  string-->objlet obj=path.parse(__filename);
console.log(obj.base);
let objpath={   
 root:'E:\\',    
base:'abc.txt',    
ext:'.txt',    
name:'abc'
}                //E:/abc.txt

4http模块

引用http模块需要加载

const http=require('http');

创建服务:

方法一:
 let server=http.createServer();
 server.on('request',(req,res)=>{//  res.end('hello');
});
server.listen(3001);
创建服务2
http.createServer((req,res)=>{   
 // req.url  可以获取 url中的路径地址:   端口后边的部分   
  // res.end() 结束响应  
    // startWidth(): 判断是否在 url地址  以...开始    if(req.url.startsWith('/index')){        
    res.write('hello');       
     res.write('hi');        
     res.write('nihao');        
     // end方法 用来完成 响应, 只能执行一次        
     res.end();        
     // res.end('index');    
     }else if(req.url.startsWith('/about')){        
     res.end('about');   
      }else{        r
      es.end('No Content');  
        }}).listen(3001,'192.168.1.157',()=>{    
        console.log('running....');
        });

静态文件的封装:

const path=require('path');
const fs=require('fs');
const mime=require('./mime.json')
// 封装静态文件的处理
exports.staticServer=(req,res,root)=>{    fs.readFile(path.join(root,req.url),(err,fileContent)=>{
        if(err){           
         // res.write();           
          res.writeHead(404,{               
           'Content-Type':'text/plain;charset=utf8'            
           });           
            res.end('No Page.....')        
            }else{           
             let dtype='text/html';            
             let ext=path.extname(req.url);            
             if(mime[ext]){  
             // 判断文件的后缀名在mime文件中存在
               dtype=mime[ext];            
                             }            
                             // 如果响应的内容是文本, 就设置成utf-8编码
             if(dtype.startsWith('text')){
             dtype+=';charset=utf8';           
              }           
               // 设置响应头           
                res.writeHead(200,{               
                 'Content-Type':dtype           
                  });            
                  // console.log(ext+'============')  
                            res.end(fileContent);        
                 }    
           })}

4url模块

get:

 let ret=url.parse(str,true);

猜你喜欢

转载自blog.csdn.net/weixin_42056687/article/details/107871977
今日推荐