1. Buffer基本操作

Buffer对象是node处理二进制数据的一个接口。它是node原生提供的全局对象,可以直接使用,不需要require('Buffer')。

  • 实例化
  • Buffer from(array)
  • Buffer alloc(size)
  • 功能方法
  • Buffer isEncodeing() 判断是否支持编码
  • Buffer isBuffer() 判断是否为Buffer
  • Buffer byteLength() 返回指定编码的字节长度,默认为utf8
  • Buffer concat() 将一组Buffer对象合并为一个Buffer对象
  • 实例方法
  • write() 向Buffer对象中写入内容
  • slice() 截取新的Buffer对象
  • toString() 把Buffer对象转成字符串
  • toJson() 把Buffer对象转成json形式的字符串

2. 核心API操作

2.1 路径操作API
  1. const path = require('path');首先引入path模块
  2. path.basename()获取路径的最后一部分(文件名和属性)
    例如path.basename('/foo/bar/baz/asdf/indexedDB.html')
  3. path.dirname('/abc/qq/www/abc.txt')只获取路径,不获取文件名
  4. 路径的格式化处理path.format()path.parse(),第一个是把对象转变成字符串,第二钟是把字符串转变成对象。例如:
let obj = path.parse(__filename);
console.log(obj);

得到,运行项目的路径对象。

nodejs REST API签名规则_es6


        5. path.join()拼接路径

        6. path.relative()计算相对路径

        7.path.resolve()解析路径,类似cmd中我们cd一步步进入路径

        8.path.delimiter()表示路径分隔符(windows中是\,Linux中是/)

       9.path.sep()环境变量分隔符(windows中使用;,Linux中使用:)

2.2 文件操作API

node.js中的文件操作属于I/O的一种,为异步操作,一为文件操作,一为网络操作。当然在浏览器中也存在异步操作,主要存在三种:1.定时任务 2.事件处理 3.AJAX回调处理。

因为js中的运行为单线程的,引入了事件队列的机制。当遇到某些代码比较耗时的情况下,会放置队列中,继续进行js代码。能进入到队列的任务:文件读写、网络请求响应处理。

  1. fs.stat()方法中的:isFile判断是否为文件,isDirectory判断是否为目录。其中常用属性有atime为访问时间,ctime为文件的状态信息发生变化的时间(比如文件的权限),mtime为文件数据发生变化的时间,birthtime为文件创建的时间。
  2. fs.readFile()读文件操作。有三个参数,第一个参数为路径,第二个参数有编码得到的是字符串,如果没有第二个参数那么得到的是Buffer对象,第三个是回调函数里面有出错返回err和读取参数data。
const fs = require('fs');
const path = require('path');

let strpath = path.join(__dirname,'2.html');
fs.readFile(strpath,'utf8',(err,data) => {
    //如果有错返回
    if(err) return;
    // console.log(data.toString());
    console.log(data);
});
  1. fs.readFileSync(path,第二个参数转码)
  2. 文件的流式操作中,静态方法只能通过类名来调用,不可以通过实例对象来调用
  3. 类的继承,子类调用父类的静态方法时,需要通过类名(此处为Dog)进行调用,而不是之后定义的名称。
class Dog extends Animal {
    constructor(name,color) {
        super(name);  //super用来调用父类
        this.color = color;
    }
    showColor() {
        console.log(this.color);
    }
}
2.3 大文件操作(流式操作)
  1. fs.createReadStream(path[, options])原路径
  2. fs.createWriteStream(path[, options])目标路径
  3. node.js中没有dom操作,所以无法定义点击事件,但是可以通过readStream.on('data',(chunk))来调用事件,也可以使用pipe直接把输入流和输出流连接起来,是一种简洁的处理方式,以下更加简便
fs.createWriteStream(span).pipe(fs.createWriteStream(dpath))
2.4 目录操作
  1. fs.mkdir(path,'目录名称',callback)异步创建目录,其中回调函数为一个参数为err
  2. fs.mkdirSync(path,'目录名称'))同步创建目录
  3. fs.readdir(path,callback)读取目录,这里callback为两个参数err和files,files表现为数组形式,包括所有目录名和文件名,推荐异步的方式,同步性能弱
  4. fs.rmdir(path.join(__dirname,'要删除的目录'),callback)删除目录操作