Node基础API使用

文件操作案例(初始化目录结构)

const path = require('path');
const fs = require('fs');

let fileContent = `
	<!DOCTYPE html>
	<html>
	<head>
		<title></title>
	</head>
	<body>
		welcome to home!
	</body>
	</html>
`;
let root = 'C:\\Users\\www\\Desktop';
let initData = {
	projectName: 'myDemo',
	data:[
		{
			nam: 'img',
			type: 'dir'
		},{
			nam: 'css',
			type: 'dir'
		},{
			nam: 'js',
			type: 'dir'
		},{
			nam: 'index.html',
			type: 'file'
		}
		
	]
}
//创建项目根路径
fs.mkdir(path.join(root, initData.projectName), (err)=>{
	if(err) return;
	initData.data.forEach((item)=>{
		if(item.type == 'dir'){
			//创建子目录
			fs.mkdirSync(path.join(root, initData.projectName, item.name));
		}else if(item.type == 'file'){
			//创建文件并写入内容
			fs.writeFileSync(path.join(root, initData.projectName, item.name), fileContent);
		}
	});
});

Buffer基本操作

用来处理二进制数据
本质上就是字节数组
API分类:
    1.构造方法(类)
    2.静态方法
    3.实例方法

//实例化Buffer方式
let buf = new Buffer(5);
console.log(buf);//十六进制表示方式

let buf = Buffer.alloc(5);
console.log(buf);

let buf = Buffer.from('hello');
console.log(buf);

let buf = Buffer.from([0x62, 0x75,0x66,0x66,0x65,0x72]);
console.log(buf.toString());//buffer

//功能方法--静态方法
let buf = Buffer.from('hello', 'utf8');//指定编码
console.log(buf);
console.log(Buffer.isEncoding('utf8'));//是否支持某种编码
let buf = Buffer.from('hello');
console.log(Buffer.isBuffer(buf));//判断是否是一个Buffer对象
let buf = Buffer.from("中国");
console.log(Buffer.byteLength(buf));//返回编码字节长度
let buf = Buffer.alloc(3);
let buf2 = Buffer.alloc(5);
let buf3 = Buffer.concat([buf,buf2]);
console.log(Buffer.byteLength(buf3));

//实例方法
write() 向buffer对象汇总写入内容
	let buf = Buffer.alloc(5);
	buf.write('hello');
	//buf.write('hello', 2);
	//buf.write('hello', 2, 2);
	console.log(buf);
slice() 截取新的buffer对象
	let buf = Buffer.from("hello");
	let buf1 = buf.slice();
	//let buf1 = buf.slice(2);
	//let buf1 = buf.slice(2, 3);
	console.log(buf1.toString());
toString() 把buf对象转成字符串
toJson() 不需要显示调用,当JSON.stringify被调用的时候,会被调用到
	const buf = Buffer.from([0x1,0x2,0x3,0x4,0x5]);
	const json = JSON.stringify(buf);
	console.log(json);

路径操作Path

const path = require('path');
//获取路径的最后一部分
path.basename('a/a.html');//a.html
path.basename('a/a.html', '.html');//a
//获取路径
console.log(__dirname);
console.log(path.dirname('a/a/a.txt'));// a/a
//获取文件的扩展名
console.log(path.extname(a.html))//.html
//路径格式化处理
//path.format()  obj->string
//path.parse()   string->obj
let obj = path.parse(__filename);
console.log(obj);//root 文件的根路径  dir文件的全路径  base 文件名称 ext扩真名 name文件名称
let objpath = {
	root: 'd:\\',
	base: 'ba.txt',
	ext: 'txt',
	name: 'abc'
};
let strpath = path.format(objpath);
console.log(strpath);
//判断是否为绝对路径
console.log(path.isAbsolute('/root'));
console.log(path.isAbsolute('C:\\'));
//拼接路径
console.log(path.join('/foo','bar'));// /foo/bar
//格式化路径
console.log(path.normalize('/foo/..'));
console.log(path.normalize('C:\\foo\\..\\'));
//计算相对路径
console.log(path.relative('/aa/cc','/aa/bb'));
//解析路径
console.log(path.resolve('/foo/bar','/tmp/file/'));
//两个特殊的属性
console.log(path.delimiter);//表示路径分隔符
console.log(path.sep);//环境变量分隔符

异步IO

1.文件操作
2.网络操作
在浏览器中也存在异步操作
    1.定时任务
    2.事件函数
    3.Ajax回调处理
js的运行是单线程的
引入的事件队列机制
NodeJs中的事件模型
    与浏览器中的事件模型类似
    单线程+事件队列
NodeJs中异步执行的任务:
    1.文件IO
    2.网络IO
基于回调函数的编码风格

文件操作fs(FileSystem)

const fs = require('fs');
//查看文件信息
fs.stat('./a.txt', (err, stats)=>{
	//一般回调函数第一个参数是错误对象,如果err为空,表示没有错误,否则表示报错了
	if(err) return;
	console.log(err);
	if(stat.isFile()){
		console.log('文件');
	}else if (stat.isDirectory()){
		console.log('文件');
	}
	//atime 访问时间
	//ctime 修改时间 文件的状态信息发生变化的时候
	//mtime 修改时间 文件数据发生变化的时间
	//birthtime 文件的创建时间
	console.log(stat);
});
//同步操作
let ret = fs.statSync('./a.txt');
console.log(ret);//同上面的stat
//读文件操作
const path = require('path');
let strpath = path.join(__dirname, 'a.txt');
fs.readFile(strpath, (err, data)=>{
	if(err) return;
	console.log(data);
	console.log(data.toString());
});
//如果第二个参数指定了编码,那么回调函数获取到的数据就是字符串
//如果没有,那么得到的是二级制的buffer对象
fs.readFile(strpath,'utf8', (err, data)=>{
	if(err) return;
	console.log(data);
});
//同步操作
let ret = fs.readFileSync(strpath);
console.log(ret);//buffer对象
let ret = fs.readFileSync(strpath, 'utf8');
console.log(ret);//字符串
//写文件操作
let strpath = path.join(__dirname, 'data.txt');
//写入字符串
fs.writeFile(strpath, 'hello nihao', ['utf8'], (err)=>{
	console.log(err);
});
//写入buf
let buf = Buffer.from('hi');
fs.writeFile(strpath, buf, ['utf8'], (err)=>{
	console.log(err);
});
//同步操作
fs.writeFileSync(strpath, 'tom and jerry');

以上是一部分NodeJs的API的使用总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值