Nodejs 基础

官网传送门

初识 Nodejs

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine

Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境

Buffer 缓冲区

Buffer 缓冲区文档

Buffer 常用方法:

var str = 'Hello前端'
var buf = Buffer.from(str)
// 占用内存的大小,一个汉字3字节 13
console.log(buf.length)
// 字符串的长度 7
console.log(str.length)
// 8进制输出第一个元素 145
console.log(buf[1].toString(8))
//创建一个10个字节的buffer
var buf2 = Buffer.alloc(10)
//通过索引,来操作buf中的元素
buf2[0] = 88
buf2[1] = 255
buf2[2] = 0xaa
buf2[3] = 255
var buf3 = Buffer.allocUnsafe(10)
console.log(buf3)

fs 文件系统模块

打开模式:

无标题

读取文件

简单文件读取

语法格式:

fs.readFile(path[, options], callback)
const fs = require('fs')
fs.readFile('./files/1.txt', 'utf-8', function(err, data) => {  
	if(err) {    
		return console.log('failed!' + err.message)  
}  
console.log('content:' + data)
})
// 复制文件内容
fs.readFile("C:/Users/笔记.mp3", function(err, data) {
    if(!err) {
        console.log(data);
        // 将data写入到文件中
        fs.writeFile("C:/Users/hello.jpg", data, function(err){
            if(!err){
                console.log("文件写入成功");
            }
        } );
    }});

流式文件读取

var fs = require('fs')
// 创建一个可读流
var rs = fs.createReadStream('C:/Users/笔记.mp3')
// 创建一个可写流
var ws = fs.createWriteStream('a.mp3')
// 监听流的开启和关闭
// 这几个监听不是必须的
rs.once('open', function () {
  console.log('可读流打开了~~')})
rs.once('close', function () {
  console.log('可读流关闭了~~')
  //数据读取完毕,关闭可写流
  ws.end()})
ws.once('open', function () {
  console.log('可写流打开了~~')})
ws.once('close', function () {
  console.log('可写流关闭了~~')})
//要读取一个可读流中的数据,要为可读流绑定一个data事件,data事件绑定完毕自动开始读取数据
rs.on('data', function (data) {
  console.log(data)
  //将读取到的数据写入到可写流中
  ws.write(data)})

简便方式:

var fs = require('fs')
var rs = fs.createReadStream('C:/Users/lilichao/Desktop/笔记.mp3')
var ws = fs.createWriteStream('b.mp3')// pipe()可以将可读流中的内容,直接输出到可写流中
rs.pipe(ws)

写入文件

简单文件写入

语法格式:

fs.writeFile(file, data[, options], callback)
const fs = require('fs')
fs.writeFile('./files/2.txt', 'Hello Nodejs', function (err) {
  if (err) {
    return console.log('failed!' + err.message)
  }
  console.log('success!')})
fs.writeFile('C:/Users/hello.txt', '通过 writeFile 写入的内容', { flag: 'w' }, function (err) {
  if (!err) {
    console.log('写入成功!')
  } else {
    console.log(err)
  }})

流式文件写入

// 同步、异步、简单文件的写入都不适合大文件的写入,性能较差,容易导致内存溢出var fs = require('fs')// 创建一个可写流var ws = fs.createWriteStream('hello3.txt')ws.once('open', function () {  console.log('流打开了~~')})ws.once('close', function () {  console.log('流关闭了~~')})// 通过ws向文件中输出内容ws.write('通过可写流写入文件的内容')ws.write('1')ws.write('2')ws.write('3')ws.write('4')// 关闭流ws.end()

路径动态拼接问题 __dirname

fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err, data) {  ...})

其它操作

验证路径是否存在:

获取文件信息:

删除文件:

列出文件:

截断文件:

建立目录:

删除目录:

重命名文件和目录:

监视文件更改: