nodejs入门总结五:buffer模块,fs模块

buffer缓冲区类

为什么使用buffer?
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。原始数据存储在 Buffer 类的实例中。

创建缓存:
const buf=Buffer.from(arrayBuffer[, byteOffset[, length]]); //Buffer.from(string[, encoding])
const buf=Buffer.alloc(); //会被使用零进行初始化
const buf=Buffer.allocUnsafe();//不会被初始化,可能含有敏感信息

(1)创建:from(),alloc(),allocUnsafe()不被初始化,可能包含敏感信息 ,allocUnsafeSlow(),
(2)write(string,offset[,length],encoding)写入,如果空间不够,写入人部分,返回写入代字节数;
(3)toString(encoding,start,end])字符串读取;
(4)toJSON():转json
(5)concat()缓存区合并
(6)copu()拷贝缓冲区
(7)slice()剪切缓冲区
(8)lenght()长度
(9)buf[0]获取buf,获取 Unicode 码,用于标识 buffer 位置中的字符

备注:
Buffer对内存的权限操作相比很大,可以直接捕获一些敏感信息,所以在v6.0以后,官方文档里面建议使用 Buffer.from() 接口去创建Buffer对象。
Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
V8 JavaScript 引擎外部分配的固定大小的内存块(无法调整大小)。
Buffer 与流紧密相连。 当流处理器接收数据的速度快于其消化的速度时,则会将数据放入 buffer 中。

fs文件模块

Node的炒作文件,文件夹模块,同一种方法都有异步,同步;还提供了流传播;

常用方法

1.文件夹操作:

fs.mkdir(./newdi,callback)|fs.mkdirSync(./newdi): 创建文件夹
fs.rmdir(path) | fs.rmdirSync():删除文件夹
fs.rename ( oldpath , newpath, callBack )|fs.renameSync()
fs.readdir(path,callback) | fs.readdirSync():读取文件夹

2.文件操作

增,删,改,查
fs.appendFileSync(path, data, options)|fs.appendfile( path , data , fn):新增文件,生成文件的路径。 如果文件存在则在原有的内容之后追加内容,

fs.unlink( path , callback ):删除文件
fs.rename ( oldpath , newpath, callBack ):修改文件名, 此功能可以修改文件名,剪切文件,修改文件夹名,简介文件夹;

writeFileSync(path,data) | fs.writeFile(path, content, objFlag, callback):只会存入最后一条信息; //flag控制写入模式,
appendFileSync(path,dat)|appendFile(path,dat):在文件后面追加内容;

fs.readFileSync(FileName) | fs.readFile('/Users/joe/test.txt', 'utf8' , (err, data) => {})//读取
r+ 打开文件用于读写。
w+ 打开文件用于读写,将流定位到文件的开头。如果文件不存在则创建文件。
a 打开文件用于写入,将流定位到文件的末尾。如果文件不存在则创建文件。
a+ 打开文件用于读写,将流定位到文件的末尾。如果文件不存在则创建文件。

同步读取文件,都会在返回数据之前将文件的全部内容读取到内存中。会消耗内存;更好的选择是使用流来读取文件的内容。返回代是buffer,需要使用tosting()转化一下

fs常用方法
fs.open(path,'r',(err,fd)=>{}):获取文件,第一个参数为路径,第二个为打开模式,第三个为回掉,fd为文件描述
Fs.write()
Fs.read()
Fs.colse()
fs.stat(path,(err,stats)=>{}):获取文件属性,常用isFile(),isDirectory(),size等
fs.access() 检查文件夹是否存在以及 Node.js 是否具有访问权限。
fs-extra 模块,fs模块的升级;

文件描述符
(1)fs.open('/Users/joe/test.txt', 'r', (err, fd) => { //fd 是文件描述符。})函数第二个入参威描述符,文件描述在回掉函数中返回,
(2)const fd = fs.openSync('/Users/joe/test.txt', 'r'); //fd为返回d文件描述;
一旦获得文件描述符,就可以以任何方式执行所有需要它的操作;怎么添加文件描述,我还没弄明白;

stream(流)

高效的方式处理读/写文件、网络通信、或任何类型的端到端的信息交换。
在传统的方式中,当告诉程序读取文件时,这会将文件从头到尾读入内存,然后进行处理。使用流,则可以逐个片段地读取并处理(而无需全部保存在内存中)。

流的优点
(1)内存效率: 无需加载大量的数据到内存中即可进行处理。
(2)时间效率: 当获得数据之后即可立即开始处理数据,这样所需的时间更少,而不必等到整个数据有效负载可用才开始。

流分为四类:
(1)Readable: 可以通过管道读取、但不能通过管道写入的流 当推送数据到可读流中时,会对其进行缓冲,直到使用者开始读取数据为止。
(2)Writable: 可以通过管道写入、但不能通过管道读取的流。
(3)Duplex: 可以通过管道写入和读取的流,基本上相对于是可读流和可写流的组合。
(4)Transform: 类似于双工流、但其输出是其输入的转换的转换流。

stream常用事件:data-数据,end-读取完毕,error-错误是触发,finish-写入完毕;
(5)管道流pipe;是流的一个方法,快速实现文件读取;
(6)链式流,是通过管道流建立的链式调用;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容