目录
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);