node常见的操作

标签: node

1、Buffer本质

  • Buffer类是直接用来存放二进制的缓存区
  • 无需加载就可以使用
  • Buffer中存放的数据都是二进制的,但是显示用16进制
  • 显示的时候,先将十进制转二进制,取前八位,再转成16进制显示
  • 大小一旦确定,不能修改
  • 编码方式是UTF-8
  • 汉字占3个字节,阿拉伯数字和英文字母占1个字节

 

var buff = Buffer.alloc(10);    //创建出来的二进制数据最纯净,但是性能较差。创建时候先将创建数据
                                //  的区域全部清零。Buffer.allocUnsafe()性能更好,但是创建出来的
                                 // Buffer对象可能会包含二进制数据


buff[0]=23;
buff[8]=255;
console.log(buff);//输出的是Buffer对象 <Buffer 17 00 00 00 00 00 00 00 ff 00>
console.log(buff[0]);  //23  单独输出时候为十进制

 

2、Buffer常见方法

(1)Buffer.from():将字符串转换为Buffer对象

//Buffer对象专成字符床
var str ='hello 帅哥!';
var str0 = Buffer.from(str);
console.log(str0); // <Buffer 68 65 6c 6c 6f 20 e5 b8 85 e5 93 a5 ef bc 81>

//字符串专程Buffer对象
str0.toString()

(2)Buffer.alloc(size)

  • 创建一个制定大小的Buffer对象
  • 以前构造Buffer类用new Buffer后来被废除。
  • 改用Buffer.alloc().Buffer.alloc()返回一个指定size的Buffer实例,创建速度比Buffer.allocUnsafe() 慢。
  • 优点:新创建的Buffer实例不会包含旧的或者潜在的敏感数据

(3)Buffer.allocUnsafe()

  • 创建一个指定大小的Buffer对象,可能包含敏感数据

3、同步文件的写入

**fs文件的写入分为同步和异步之分。 **

同步文件的写入,步骤

//引入模块
var fs = require('fs');
//同步打开文件
var fd = fs.openSync('1.txt','w');
//同步写入文件
fs.writeSync(fd,'hello meisi', 20);
//同步关闭文件
fs.closeSync(fd);

(1)fs.openSync(path, flags[, mode])

  • path:路径,字符串
  • flags:打开的方式,是读还是写--w / r
  • 注意:返回值是一个文件的编号

(2)fs.writeSync(fd, string[, position[, encoding]])

  • fd:文件名
  • string:写入的内容,字符串的形式
  • position:开始写入的位置
  • encoding:写入的编码形式,一般是UTF-8

(3)fs.closeSync(fd)

  • fd:关闭的文件名

4、异步文件的写入

步骤:

//引入模块
var  fs = require('fs');
fs.open('1.txt','w',function (err,fd) {
//打开文件没有出错
if(!err){
    //开始写入数据
    fs.write(fd,'11111',function (err) {
        //写入数据没有出错
        if(!err){
            console.log('文件写入成功--')
        }
        //关闭文件
        fs.close(fd,function (err) {
            if(!err){
                console.log('文件关闭成功')
            }
        })
    })
}else {
    console.log('文件出错了')
    }
});
console.log('程序向下执行--');

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

(2)fs.write(fd, string[, position[, encoding]], callback)

(3)fs.close(fd, callback)

注意:同同步写入比较,多了一个回调。

5、简单文件的写入步骤

var fs = require('fs');
//异步
fs.writeFile('1.txt','niha0',{flag:'a'},function (err,fd) {
if(!err){
    console.log('文件写入成功');
}
else {
    console.log('文件写入异常')
}
});
//同步
fs.writeFileSync('1.txt','222',{flag:'a'});
console.log('同步写入成功');
  • 异步:fs.writeFile(file, data[, options], callback)

  • 同步:fs.writeFileSync(file, data[, options])

  • 注意:options传入一般为一个对象{}

    • encoding :编码,默认为 'utf8'。
    • mode:代表权限,默认为 0o666。
    • flag :读写形式。默认为 'w'。w是将原来的内容全部覆盖
    • 常见的读写形式: 

6、流式文件写入步骤

var fs = require('fs');
var ws  = fs.createWriteStream('hello.txt');
//用once,监听只执行一次
ws.once('open',function () {
    console.log('打开了')
});
ws.write('你好1');
ws.write('你好2');
ws.write('你好3');
ws.write('你好4');
//从开始的地方截断,而不是从结束的地方
ws.end();
  • fs.createWriteStream(path[, options])

7、简单文件的读取

var fs = require('fs');
fs.readFile('6.txt',function (err,data) {
if(!err){
    console.log('读取成功');
    console.log(data);
    console.log(data.toString());
}else {
    console.log('失败')
}
})
  • fs.readFile(path[, options], callback) 异步
  • fs.readFileSync(path[, options]) 同步
  • 分类:同步文件读取、异步文件读取、简单文件读取、流式文件读取

8、流式文件读取

//引入模块
var fs=require('fs');
//创建可读流
var rs = fs.createReadStream('index.mp3');
//创建可写流
var ws =fs.createWriteStream('index0.mp3');
rs.pipe(ws);
  • fs.createReadStream(path[, options])
版权声明:本文为XZZ2222原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/XZZ2222/article/details/80929831