node基础

以下是学习node的笔记

一、buffer缓冲区

如何理解buffer?

buffer 是个缓冲区,可以理解成是一个数组,但是js中的数组只能保存str,number,obj等数据类型,但是node.js是能作为服务器的语言,还要传输图片音乐视频等格式,这些文件都是二进制,用数组很明显是实现不了的,因此要使用buffer
buffer是底层语言它能直接在硬盘上开辟内存空间

1.buffer的开辟空间API

Buffer.alloc(size)能开辟一个安全的内存空间,需要清除原有数据

Buffer.allocUnsafe(size)能开辟一个不安全的内存空间但是效率高,不需要清除原有数据

二、node的同步文件写入

首先要知道什么是fs,它是file system的简写,fs是node的核心函数,直接可以引入不需要npm 下载
用node写文件和人工手动写文件是一样的步骤: 打开文件-向文件中写入内容-保存并关闭文件

1.打开文件

fs.opensync (path,flags[,mode])
-path要打开文件的路径
-flags打开文件要微的操作的类型
r只读的
w可写的
-mode设置文件的领作权限,一靓不传
返回值
-该方法会返回一个文件的描述符作为达果,费们可以通过该描述符来对文件进行各种c操作

2.向文件中写入内容

fs.writesync(fd,string[,position(,encoding]])
-fd文件的描述符,需要传递要可入的文件的描述符
-string要写入的内容
-position写入的起始位置
-encoding可入的编码,默以utf-8

3.保存并关闭文件

fs.closesyne(fd)
-td要夫闭的文件的描述符
代码如下:

var fs require("fs");
//打开文件
var fd = fs.opensync("hello.txt","w");
//向文件中写入内容
fs,writesync(fd,"今天天气真不错w",2):
//关闭文样
fs.closesync(fd);

三、node的异步文件写入

异步文件写入需要open方法:

fs.open(path[, flags[, mode]], callback)

官方中文文档:
在这里插入图片描述

上代码:

//打开文件
fs.open("hello2.txt", "w", function(err, fd) {
  //判断是否出错
  if (!err) {
    //如果没有出错,工则对文件进行写入操作
    fs.write(Ed, "这是异步写入的内容", function(err) {
      if (!err) {
        console.log("写入成功~~");
      }
      //关闭文件
      fs.close(fd, function(err) {
        if (!err) {
          console.log("文件已关闭~~~");
        }
      });
    });
  } else {
    console.log(err);
  }
});
console.log("程序向下执行~~~");

四、node的简单文件写入

异步写法

fs.writeFile(file,data,[options],callback)
-file要操作的文件的路径
-data要写入的数据
-options进项,可以对写入进行一些设置I
-callback当写入完成以后执行的函数

//引入fs模块
var fs require("fs");
fs.writeFile("hello3.txt","这是通过writeFile写入的内容",function(err){
if(!err){
console.log("写入成功~~~");
});

同步写法

fs.writerilesync(file,data[,options])
-file要操作的文件的路径
-data要写入的数据
-options进项,可以对写入进行一些设置I
-callback当写入完成以后执行的函数

五、node的流式文件写入

当我们要写入的文件是个视频或者比较大内存的文件时,就不能一次写入,需要想抽水一样用一根水管,一点一点的流水式的写入
此时需要的api是fs.createWriteStream(path,options)

官方api解释 :http://nodejs.cn/api/fs.html#filehandlecreatewritestreamoptions
在这里插入图片描述

fs.createWriteStream(path,options)该方法用于创建一个可写流
-path 文件路径
-options 配置的参数(一般可以不写)
例子:

    var ws = fs.createWriteStream("hello.txt"); //插入水管
ws.write("通过可写流写入文件的内容"); //写入文件也可以理解为开始流水
// 此时要通过监听流的open和close事件来监听流的打开和关闭
ws.once("open", function () {
  //once用来绑定一次性事件
  console.log("流打开了~~~~");
});
//关闭流
ws.end(); //注意此时不能用close()因为这事关闭被写入的一端

六、node的文件四种读取方式

1.同步文件读取

官方文档:http://nodejs.cn/api/fs.html#fsreadsyncfd-buffer-options
在这里插入图片描述

2.异步文件读取

3.简单文件读取

直接上代码

fs.readFile("hello.txt", function (err, data) {   //此方法如果文件过大,风险较大
  if (!err) {
    console.log(data.toString());
  }
});

4.流式文件读取

直接上代码
比较low的流式文件写入及读取

var fs require("fs");
//创建一个可读流
var rs = fs.createReadstream("C:/Users/lilichao/Desktop/.mp3");
//创建一个可写流
var ws = fs.createwritestrear()stream("a.mp3");
//监听流的开启和关闭
rs.once ("open",function ()
con8o1e.1og("可读流打开了~~~")});
rs.once ("close",function (
conso1e.1og("可读流关闭了~~")//数据读取完毕,关闭可写流
ws.end ()
});
ws.once ("open",function ()
conso1e.1og("可写流打开了~~")})
ws.once ("close",function ()
conso1e.1og("可写引流关闭了~~")})//如果要读取一个可读流中的数据,必须要为可读流绑定一个data事件,data事件绑定完毕,它会自动开始读取数据
rs.on("data",function (data){
console.log(data)//将读取到的数据写到可写流中
ws.write(data)
})

若使用pipe()函数可以大大缩减流式读取及写入的代码量

var fs require("fs")//创建一个可读流
var rs fs.createReadstream("C:/Users/lilichao/Desktop/.mp3")//创建一个可写流
var ws fs.createwritestream("b.mp3")//pipe()可以将可读流中的内容,直接输出到可写流中
rs.pipe (ws)

七、node中fs(文件系统)的其他方法

1.检查一个文件是否存在fs.existssync(path)

fs.existssync(path) --检查一个文件是否存在

var isExists = fs.existssync ("a.mp3");
console.log(isExists);

2.获取文件的状态fs.stat(path,callback)

同步的方法: fs.stat(path,callback)
异步的方法: fs.statsync(path)
获取文件的状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值