• Buffer的使用


    虽然知道了怎么实例化Buffer,但这还远远不够,因为Buffer类使随nodejs一起发布的核心库,Buffer不仅能处理tcp连接中发送接收的数据,也能处理图像或者是压缩文件,甚至说文件系统里面的数据,包括网络中二进制数据流,只要是nodejs中能处理的io操作中都可能用到buffer,那么具体要怎么用
    要学会Buffer的使用,一部分是Buffer的实例化,一部分是实例化后buffer对象的处理,Buffer实例化上一节已经了解过了
     
    Buffer静态方法
    Buffer
    { [Function: Buffer]
    poolSize: 8192,
    from: [Function],
    alloc: [Function],
    allocUnsafe: [Function],
    allocUnsafeSlow: [Function],
    isBuffer: [Function: isBuffer],
    compare: [Function: compare],
    isEncoding: [Function],
    concat: [Function],
    byteLength: [Function: byteLength],
    [Symbol(node.isEncoding)]: [Function] }
    从上面可以看出Buffer是一个构造函数,同时他也是一个对象
    poolSize:内存载体的容量
    静态方法isBuffer:判断对象是否是Buffer类型对象,很多时候需要判断数据类型,才会有对应后续的操作
    compare:用来判断两个对象的相对位置,一般来做按字符串的排序
    isEncoding:判断nodejs是否支持某种编码,像中文处理这种,只能使用utf-8这种编码,对于gbk这种是无法解析的
    concat:将几个Buffer对象,链接创建一个新的buffer对象
    bytelength:获得指定编码下字符串所占的字节数
    Buffer实例方法
    buffer.write(string,offset=0,length,encoding='utf8');
    string:一定要传的,也就是要写入的字符串
    offset:用来指定字符串转化为字节数据后的写入的位置
    length:写入的长度,
    encoding:指定写入字符串的编码格式,默认是utf8
    > var buf = new Buffer('hello every');
    undefined
    > buf.length
    11
    > buf.write('hi every')
    8
    > buf.toString()
    'hi everyery'
    > buf.length
    11
    这个长度依然是11,说明这个buffer在初始化的时候就已经被指定,无论你怎么去改,这个长度是不变的,这就是如果没有传offset的值的话,就是从第0为覆盖掉之前的数据,
    > buf.write(' everyeveryevery',2,16);
    9
    > buf.toString()
    'hi everyev'
    我们看到打印出来的还是11位数,然后从之前的第二位开始被覆盖成新的字符串,知道11位,就不显示了
    buffer.copy(target,tStart,tStart,sEnd=buffer.length);
    target:必须要传的,用来指定复制的目标buffer
    tStart:指定目标buffer对象中从第几个字节开始写,默认的值是0
    tStart:用来指定原buffer里面获取数据的开始位置,默认的值也是0
    sEnd:指从复制源对象里面获取数据的结束位置,默认值是buffer对象的长度
    > var buf = new Buffer('hello every')
    undefined
    > buf.length
    11
    > var buf2 = new Buffer(5)
    undefined
    > buf.copy(buf2)
    5
    > buf2.toString()
    'hello'
    > buf.toString()
    'hello every'
    buf2打印出来的数是hello,默认从0位开始,那传上这个参数,从第6为开始,到第11位结束
    > buf.copy(buf2,0,6,11)
    5
    > buf2.toString()
    'every'
  • 相关阅读:
    wzplayer for android界面
    player stop处理
    wzplayer for android界面
    android屏幕监控上下左右滑动
    OpenGL + C++ + Java
    player stop处理
    EGLHelper
    Android NDK学习 <五> C++ 支持
    【认识之初】
    Java调用windows exe程序
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9185775.html
Copyright © 2020-2023  润新知