node学习 day.02

136 阅读2分钟

一. path操作

1)path.resolve 它可以识别前边第一个参数有没有/如果没有就是根路径,如果第二个参数有/则由末尾参数的这个路径当作最终输出路径

const path = require('path');

const basePath = '/User/why'; const filename = 'abc.txt';

// const path = basePath + "/" + filename; //这种方式在不同的操作系统会出错

const filepath = path.resolve(basePath, filename)

2)path.join 简单的路径拼接不会从根路径识别,不挂第末尾参数的形式简单的进行路径拼接

用法同上

二. fs操作

const fs = require('fs');

1)读取文件

// 案例: 读取文件的信息 const filepath = "./abc.txt";

// 1.方式一: 同步操作

const info = fs.statSync(filepath); console.log("后续需要执行的代码"); console.log(info);

// 2.方式二: 异步操作

// fs.stat(filepath, (err, info) => { // if (err) { // console.log(err); // return; // } // console.log(info); // console.log(info.isFile()); // console.log(info.isDirectory()); // }); // console.log("后续需要执行的代码");

// 3.方式三: Promise

// fs.promises.stat(filepath).then(info => { // console.log(info); // }).catch(err => { // console.log(err); // });

// console.log("后续需要执行的代码");

2) 获取文件的信息

const fs = require('fs');

fs.open("./abc.txt", (err, fd) => { if (err) { console.log(err); return; }

// 通过描述符去获取文件的信息 fs.fstat(fd, (err, info) => { console.log(info); }) })

3)文件读写

const fs = require('fs');

// 1.文件写入

// const content = "你好啊,李银河";

// fs.writeFile('./abc.txt', content, {flag: "a"}, err => { // console.log(err); // });

// 2.文件读取

fs.readFile("./abc.txt", {encoding: 'utf-8'}, (err, data) => { console.log(data); });

4)文件夹操作

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

// 1.创建文件夹

const dirname = './why'; if (!fs.existsSync(dirname)) { fs.mkdir(dirname, err => { console.log(err); }); }

// 2.读取文件夹中的所有文件

// fs.readdir(dirname, (err, files) => { // console.log(files); // });

// function getFiles(dirname) { // fs.readdir(dirname, { withFileTypes: true }, (err, files) => { // for (let file of files) { // // fs.stat(file) 可以, 但是有点麻烦 // if (file.isDirectory()) { // const filepath = path.resolve(dirname, file.name); // getFiles(filepath); // } else { // console.log(file.name); // } // } // }); // }

// getFiles(dirname);

// 3.重命名

fs.rename("./why", "./kobe", err => { console.log(err); })

三.文件夹的复制

image.png

四.events模块

1.基本使用

const EventEmitter = require("events");

// 1.创建发射器

const emitter = new EventEmitter();

// 2.监听某一个事件

// addListener是on的alias简写 emitter.on('click', (args) => { console.log("监听1到click事件", args); })

const listener2 = (args) => { console.log("监听2到click事件", args); } emitter.on('click', listener2)

// 3.发出一个事件

setTimeout(() => {

emitter.emit("click", "coderwhy", "james", "kobe");

emitter.off("click", listener2);

emitter.emit("click", "coderwhy", "james", "kobe"); }, 2000);

2.获取注册的事件

console.log(emitter.eventNames()); // 获取所有的注册事件 console.log(emitter.listenerCount("click")); // 获取click事件有几个 console.log(emitter.listeners("click")); // 获取具体的函数体

3.特殊的用法

// 只执行一次

emitter.once('click', (arg1, arg2, arg3) => { console.log("监听1到click事件", arg1, arg2, arg3); })

// 将本次监听放到最前面

emitter.prependListener('click', (arg1, arg2, arg3) => { console.log("监听3到click事件", arg1, arg2, arg3); })

转自 coderwhy ,此文章仅供个人学习