Node.js 学习笔记

创建时间 2020-06-23
更新时间 2020-06-23

文件系统

buffer.js 缓冲区

  • buffer 的结构和数组很像,操作方法也和数组类似,直接对内存进行操作
  • 数组中不能存储二进制文件, buffer 用来存储二进制数据,性能比 array 高
var str = "hello world";

var buf = Buffer.from(str);

console.log(buf);

创建定长 Buffer

// 创建一个指定大小的 buffer 
var size = 1024;

var buf2 = Buffer.alloc(size);
console.log(buf2);

buf2[0] = 88;
console.log(buf2);

var buf3 = Buffer.allocUnsafe(aize);

buffer.toString(); // 将 buffer 中的数据转换为 字符串

fs 文件系统 File System

  • 通过 node 读写操作系统中的文件
  • fs 是核心模块,直接引入,无需安装
  • fs 模块中的操作都有 同步异步 两种方式

文件的写入

var fs = require('fs');

// 打开文件
var fd = fs.openSync('hello.txt', 'w');

// 写入内容
fs.writeSync(fd "今天天气真真好!!!");

// 关闭文件
fs.closeSync(fd);

异步文件的写入,多了 callback 参数,用于传入回调函数,异步结果,通过回调函数的参数传入。

var fs = require('fs');

fs.open("hello.txt", "r", function(err, fd){
    if (err){
        // 出错
    }else{
        // 没错
    }
})

流文件的读写

var fs = require('fs');

var ws = fs.createWriteStream('hello.txt');

ws.once("open", function(){
    console.log('opened');
})

ws.once("close", function(){
    console.log('closed');
})

ws.write("write something");
ws.write("write something");
ws.write("write something");
ws.write("write something");
ws.write("write something");
ws.write("write something");

ws.end(); // 关闭流的入口;

文件流管道

var fs = require('fs');

var rs = fs.createReadStream('input.txt');
var ws = fs.createWriteStream('ouput.txt');

rs.pipe(ws); // 将可读流中的数据直接输出到可写流中;