00:00
上午讲了一下这个buffer啊buffer,那buffer呢,我们就不再去往下再细说了,因为buffer里边它还有一些这个方法,包括对象的方法,包括我们这个这个这个构造函水边自带的一些这个工具方法都有,那我也就不再去多说了,因为呃,确实整体来说这些方法用的不是那么的多啊,不是那么多,感兴趣可以自己看一下,你不感兴趣的话,你就知道这个buffber,具体来说它是一个什么东西,哎,怎么去创建就OK了啊,然后要用的时候干嘛呀。哎,你再去打开我们这个文档ds.cn在这是可以去可以去具体查一下啊,可以查一下,但是我们具体这种操作的话,其实不多啊,就是不多,主要主要是他是做我们一个中间的一个这个传送数据的这么一个容器,这么一个东西啊,那接下来呢,我们来进入到我们这个这个下一块我们叫什么呢?叫做一个。文件系统啊,文件系统FS,诶全名叫做一个file system啊file文件system系统,那直接过来就叫做一个文件系统,那文件系统是干嘛的。
01:10
来新建一个这个加S文件M02叫做一个FS,这里边我们要说一下文件系统是干嘛的?文件系统我们叫什么呢?叫做一个这个file,这个system,哎,System,那这个文件系统说白了,文件系统我们说简单来说就是什么呢?就是通过我们这个note来干嘛呢?操作我们这个系统中的这个啊文件啊,文件系统就这么一个作用,通过这个note来操作系统中的什么呀,系统中的文件,比如说什么叫系统中的文件呀,比如说我桌面上右键新建一个文本文件叫1hello.t这就是什么呀,这个就是系统中的文件,那我们可以干嘛呢?通过node JS来对这些文件进些进行一些什么呀,增删改查的操作,我可以干嘛呀,打开文件,然后向文件里去写入一些内容,然后。
02:11
然后呢,我去保存文件等等这些东西之前我们是不是都可以通过这种图形化界面来操作呀,那现在有了note的文件系统干嘛呢?我就可以通过我们的note GS来对这个东西进行了操作啊,那这就是我们说的一个文件系统,在note中与文件系统的交互是非常重要,那其实我们想想为什么重要,我们想想服务器是干嘛的?你在访问服务器的候,我们是不是看到的是一个网页呀,一般情况下看到一个网页,那其实就是你在访问服务器的时候,他把服务器里边的网页是不是返回给你的用户啊,所以其实我们的服务器本质其实就是将我们的本地文件发送给谁啊,发送给我们的远程客户端,所以你要发送你是不是先得把本地文件给。读出来啊,哎,或者你需要先写一些本地文件,那这都是我们些要最基本的要求,那我们的note通过FS模块来和文件系统进行交互,那这个模块呢,给我们提供一些什么呀,标准文件访问npi来打开什么呢?诶来打开读取和写入文件,以及呢,与文件进行交互啊,以及文件进行交互,所以简单来理解,文件系统就是用来操作什么呀文件的,不点像我们别的语言那个什么呀,IO啊,去读取这个文件啊,读取和写入文件,那我们来看看这东西我们要怎么用了,那首先我们要说我要使用文件系统的,我们要使用这个文件系统,我们需要什么呢?需要先引入我们这个FS模块啊,需要引入FS模块,那FS呢是核心模块干嘛呢?直接引入,哎,不需要下载,这跟这个八份又不太一样,八份也是我们note自带的,它直。
03:54
专用型了,连引入都不用,而FS呢,是模心核心模块,它干嘛呀,它直接引入你不需要下载了,直我们上午也引入过了,直接挖一个FS,等于一个这个require,一个FS,这是不是就已经引入进来了,哎,用进了啊,然后在这儿我来一个fslo,我们来输出一下这一保存来运行一下。
04:16
这是不是就读出来这个对象了,哎,这就是我们引入的这个FS模块,好模块有了,那接下来我们是不是要说这个文件,这个模块的如何使用啊,那怎么使用啊,那它无非就是对我们这个文件进行一些这种增删改查之类的操作,那所以这里边我们再往下看什么呢?哎,同步和异步调用这块我们要说一下,FS模块中所有的操作都有两种形式可供选择,叫同步和异步,所以这里边注意FS模块里边的方法都会是大部分方法啊,它都是一对一对出现的,比如说我们来看一下文档,找一下我们FS在这儿是文件系统直接进来。
05:01
我们来看一下它里边这方法啊,随便找几个,你看a pen file对吧,还有一个叫做a pen file sync,哎,这要趁着这个mod,这一个叫趁着mod sc,你会发现它都是close,一个叫close snc是不是都是一对一对的呀,有一个带SC的,一定就有一个什么呀,不带的看懂了吧?哎,都是一对一对,那这个不带的,这就叫做什么呀?异步的方法带的SNC就是什么呀,Cycle,我们同步的意思带的就是什么呀?同步方法啊,同步方法,所以这里边注意我们的F3门口中所有的方法都有两种形式,一个是同步的,还有一个是义务的,同步有什么特点,同步的模块文件系统的方法会干嘛呢?会阻塞程序的执行,说白了你这个东西操作如果不执行完了,其他操作是没有办法执行的,能这个意思吗?就是说了它会阻塞程序的。
06:01
执行,除非操作完毕,否则不会向下执行代码,哎,而异步的文件系统它不会阻塞程序的执行,而是在操作完成时通过回调函数将这个结果返回,哎,所以这是他们俩一个区别,一个是同步的,一个是异步的,但是我们来演示一下他们有什么区别,那这块其实我们应该用这个。我们应该用谁?哎,我们应该用异步,因为它也是我们node GS里边一些最有特色的一个东西啊,都是一些异步的调用啊,异步调用那这块我们先来了解一下,所以记住了啊,我们这方法都是两组一对一对的,一个带SNC,还有一个不带的,不带的是异步的,带是同步的,还有一个平方式,异步的方法都有,都有回调函数,而同步的是不是都没有啊,因为我们异步方需要通过回调函数把结果返回,而E,而同步的干嘛呀,不需要啊,E步的需要回调函数返回结果,而同步的直接就直接干嘛了,返回值return就OK了啊return就OK了,好,那我们来看看,那我们直接来说吧,那文件的操作其实主要的两个,一个是文件的,诶叫做文件的写入,还有一个叫做文件的读取啊,文件的写入,还有叫文件读取,我们先说什么呢?我们先说文件的一个写入,也就是说。
07:26
我们如何通过note GS来向文件里写入一个东西,那我们来先不管这个东西,我们先说什么呢?我们先想想,我们在用图形化界面的时候,操作的时候,我应该先干嘛?我要向一个文件里写个东西,我应该先干嘛?打先打开一个文件对吧?或者其实说来我西先有一个文件对吧?哎,我有一个文件,比如说我叫一个hello.t我要往里边写东西,我是不是得先打开文件啊,打开文件,打开文件然后呢?哎,我要写一个东西对吧?然后干嘛保存,然后呢,关闭文件对吧?所以这是我们现实的一个操作步骤啊,我们来说一下我们这个,诶手动一个操作的步骤,第一步我们要干嘛呀?第一步打开文件,第二步向文件中写入,文件中写入内容,第三步叫什么呀,哎保存哎并什么呀并。
08:26
关闭文件是不是大体是这么一个流程啊,哎,这么一个流程啊,所以那其实在现实中我们这么操作,在我们的FS模块里边同样也是这样操作,第一件事我要先干嘛,先打开怎么打开,诶那这里边我们来看文档,它里边有哪个方法,你看看像是打开的就离得挺远是吧,那我直接搜一下,叫做FS一个open啊,OPEN2个版本,一个是不带SC的,是异步的,还有一个是带这个SC的是一个什么呀,同步的,哎,我拿这个来演示,我们先来演示的是同步文件的写入,我要写入先得干嘛调,我们这个叫做FS点一个open sync,这是什么呀?同步的啊,所以这块注意我们这要说的,先说的是一个同步文件写入,我先通过这个方法来打开文件,诶,我们来看看。
09:26
它需要几个参数。是不是三个参数,三个参数后边有一个model是不是可选的呀?可选的我们来依次说一下,第一个我们叫做一个pass pass是诶,Pass是不是路径啊,所以pass表示什么呢?要打开我们这个文件的这个路径啊,要打开文件的一个路径,那比如说我这要调的话,怎么调,直接FS点一个open sync,我传个路径在这块,我直接写一个hello.t这表什么意思?这表示是一个相对路径,表示是打开我当前目录下的hello.tit能懂我意思吧?哎,hello.t啊,然后再往下看,下边一个叫做Lex flex什么呀?哎,标志标识是吧?或者要一个旗帜,那这是什么意思呢?这个的意思是什么呀?哎,这是我们说的叫做打开。
10:23
文件要做的什么呀,要做的操作的这个类型什么意思,打开文件我有可能有什么就什么作用,我有可能是打开文件我想读的对吧,只读的有可能我要想什么呀,写的还有可能我。连读代写对吧,有可能我是追加,有可能我是重新覆盖的,所以这个flag什么呀,是我们打开文件要做操作的一个类型,那我这先写一个什么,我们先说一个两个简单的类型,一个叫什么呢?一个叫做RR表什么呀,只读的,哎,然后呢,我们W叫做write,叫可写的啊,可写的两种方式,那我们这是读还是写啊。
11:04
写,我们要写入文件,所以我这传一个W,注意都是组符串啊,都是组符串写,然后第三一个我们叫做一个model model是什么呀?是可选的,你看是不是给你掏一个中号啊,可选的这是什么呢?这是我们设置文件的一个操作权限,这个东西一般我们什么呀,我们都不传,而且这东西在我们Windows系统里边一点也没用,它主要是对那个Linux起作用的,我们这儿一般就干嘛了,不传了啊,就不传了,所以第三个参数我们都是什么呀,省略的,所以打开文件非常简单,就两个参数,一个是路径,还有一个是操作的一个类型,你是要读还是写,现在我们来运行一下,直接运行走你,诶是不是运行完了,哎,那问题来了,这文件打开了吗?哎,其实打开了。但是不是说我们像我们那种卡,我一运行文件卡在我窗口打开了,那不会的,它是在内存里去把这文件干嘛了,打开了我们是看不见的,因为这它要跟我们的一样,那就没有意义了,所以在内屏打开了,但是这里边打开以后,我们是不是没有任何感觉呀,怎么就打开了,实际上注意它是有一个返回值的,它会有一个这个返回值,返回值是什么呢?我们叫做一个,哎叫做一个它该诶我应该写上边啊。
12:31
返回值,该方法会返回一个文件的一个描述符,干嘛呢?作为作为这个结果啊,作为结果我们什么呢?我们可以通过该描述符来对文件进行各种操作啊,不用操作什么意思,看着了,我直接接收一个变量Y,一个FD等于它,那这个FD就是它返回的一个结果,我这来输出一下来一个FD点一个log,这东西一般就是一个number类型的,我运行是不是一个数字几号啊,三号表示什么呀,出现这个东西就表示文件已经。
13:13
打开了你看。是不是已经有了呀,来我们再看一遍啊,我把文件给他删了啊,把文件给它删了,现在是没有的吧,没有的啊,看着我一运行走。是不是出来了呀,出来了,而且这还返回了一个三,这三什么意思?告诉你了,这文件我已经打开了,它的编号是三,待会儿你就告诉我,你要操纵三号文件,就可以直接对这个东西进行操作,能懂这意思吧?哎,所以注意啊,这返回的是一个三,但是是几不重要,是几不重要它不一定是几啊,但是我们这块知道它有返回日情了啊好,那现在文件就已经打开了啊,打开了你看它创建出来了,就已经打开了,好打开文件完事呢。
14:00
我们是该向文件里面写入内容啊,写入内容我们要调哪个方法。哎,鞋叫做什么呀?WR叫做FS,一个right啊right我调一个什么呢?我还是找一个这个叫什么呀,同步的方法啊,同步方法,同步方法的特点就是好理解啊,好理解,而异步方法呢,就是性能相对好一些,但是不好理解啊,不好理解,来我们来看一下,这个叫做一个FS right FYC,那这个方法干嘛呢?的作用就是向文件里边写入内容,我们来看参数,第一个叫做一个,第一个叫什么。FD什么意思?哎,文件的一个描述符什么意思呀,你要往文件里写,我的文件是不是多了去了呀,问题就是你要往哪个文件里写,所以这需要什么呢?需要传递,我们要修改,诶要写入的文件的描述符,写入的文件的一个描述符,然后再往下看下边一个,我们叫做一个string string什么意思?字符串,这是我们要写入的一个内容啊,要写入的一个内容,然后position是我们什么呀?这我们先不管它,Positionco一般我们都不不传的,一般都不传,Position是指的我们这个写入起始位置,Co表示我们写入了一个编码啊编码,待会我们再看这两个,我们先写这两个就够了,然后在这儿啊,我们这儿写个注释,这个是我们叫做一个打开文件,然后接下来我们来干嘛呢?
15:43
来向我们这个文件中写入内容啊,写入内容直接FS点一个这个write一个SYNC,先传一个什么呀,FD是不是表示我要向这个文件里写呀,所以注意你在写之前必须得先干嘛,先打开,你要不打开这FD你是不是没有啊,哎,没有啊先打开,打开完了以后我是不是可以向这写个内容啊,哎,我写个什么呢?写个今天的天气真不错。
16:13
今天天气真不错,我已保存是不是写完了,哎,那我怎么知道写入成没成功,如果文件里有是不是就OK了?哎,就OK了啊来,我先给它删了。咱们从头来啊,从头来在这儿我直接运行来走,诶来看文件是不是创建完了,一打开,我们来看这内容是不是写进去了,按你容写进来啊,那现在我们来说通过这种方式是不是成功的向文件里是不是写入内容了,你看它是不是跟我们这个图形化界面的操作是不是基本上一样啊,哎,哪种更简单一点。哪种更简单一点?哎,你可能会觉得我手动去创建这种方式是不是更简单一点啊?哎,但是注意了,这是让你自己人人手动去做的,对吧?我假如说干嘛呀,我跟你说来,你给我创建100个hello.t里边写入不同的内容,你觉得你有他快吗?
17:08
嗯,肯定没有,因为这个是不是适合我们大批量的运行啊,哎,大量的一个运行啊,好文件就已经写入了,那从这看,似乎我们这个功能是不是已经完成了,已经写完了吧,已经完成了,但是完成了吗。没有没有完成,因为我还差最近一件事叫什么呀,保存并关闭,其实保存在我写入的时候,自动就已经干嘛了,完成了,那就已经完成了,但是你说文件都已字已经已经出来了,那是不是其实功能就完事了,但是注意现在这个代码在我们这儿运行一点问题也没有啊,一点问题没有,你说我不关了,不关行不行,行一点问题没有,为什么呀,因为在这你看我运行的时候,他我程序是不是都停了,程序停了,这文件自然自然而然就干嘛了,就被释放了,就被释放了,你要注意了,咱们假如说我的程序是在一个服务器里运行的,我问你服务器会不会停啊,服务器会不会停啊,哎,你看我这运行的时候看着啊,它这是不是变红了,红了点什么意思,程序正在运行当中,运行当中,然后这变灰了表示什么意思?结束了,我这程序从头到尾执行完了,是不是自然就停了,但是注意。
18:22
对了,如果是服务器能不能停,你想想百度的服务器能不能停,好百度的服务器这一说停十分钟吧,好这全全国人民都上不了百度了,对吧,你说这个这个微博和服务器停十分钟吧,那全国人民都上不了微博了,能不能停啊,不能停,服务器是会持续在运行的,说白了呢,我们服务器其实都是运行到一个循环里的,它会持续的去运行啊,持续运行,那所以注意了,我这打开文件,实际上打开文件以后,这个文件就在我什么呀,在内存里边存在,能懂这意思吗?哎,存在呢,然后我写入完了以后,注意这文件在不在内存里,还在呢啊,还在呢,如果你不关的话,实际上这个文件会一直占用我们的内存空间,好,你这打开一个不关,打开两个关,打开十个关,打开1万个不关,什么结果对你的内存占用是不是越来越大呀,就相当什么呀。
19:22
就相当于你在桌面上打开文件,操作完了,咔最小化,然后干嘛呀,又打开,然后又最小化,又打开又最小化,当你打开过多文件以后,你的计算机是不是可能就就死了呀,哎,就死了,那这儿也是一样,所以注意我们操作完成以后,必须要做一件事干嘛呀,哎,关闭一定要做做这件事啊,关闭文件,但是其实在我们这个目前测试这个代码里边,关不关都行,因为程序都已经什么了,结束了啊,程序都已经结束了,好,那现在我们来看怎么关呀。哎,关其实你这猜都能猜出来,关找谁呀,哎,Close close syc这方法其实都不用说了,非常简单,里边传一个什么,是不是就传一个FD啊,哎,FDFD是谁呀?哎,FD这是我们说的要关闭的什么呀,文件的描述符,也就说你要关闭文件,你要关闭的是哪个文件,哪哪个文件,所以在这我需要调一个FS表,一个这个close,一个SC传译什么呀,FD这一保存,那表示什么意思,就是表示把这个文件给他。
20:39
关闭了,我这儿来运行一下,其实没有任何区别,同样是显进去没有任何区别啊,但是这样代码更合理,对我们内存来说也更省内存空间啊,一定要给它关掉啊,关掉好,那这就是我们同步写入,其实说半天就四行代码,先引入一个FS模块,然后干嘛呢?诶打开这个文件,打开文件,然后向文件里边写入,然后最后一个是关闭文件啊关闭文件那这块我们再来看一个啊,刚才我们说了它这有两个参数,一个是position,还有一个是encoding,哎,我们这时候没有没有测的,哎,那我说position是啥呀,是不是我传一个20。
21:20
咱们看效果啊,我这再运行。哎,我写了一个这个20,在我们这运行的时候,它这个文件里边报错了。我写错地儿了是吧,应该写哪啊,写right里边,我写上边了吧,哎,上边了吧,来写在这啊,再运行一下走。他这应该是那个缓存,没没没这个重新刷新页面,我把这给它关了,把这个文件也给它关了,刚才呢,应该是这文件啊,应该是权限,刚才设置一个文件锁上了,看见了吗?带了个锁啊,我就删了。
22:06
来这时我再运行一下,从你,哎这个没问题了,再打开发现什么了。哎,发现是不是前边空了一堆东西,哎,空了一堆东西,那什么意思呀,就是说说白了,这20表示什么意思,我从20的位置开始往后写,咱们写个一吧,写个一可写个二可能看得更清楚一点。来运行是不是空两个呀,哎,空两个说白了就是从我们这个索引为二的位置开始往后写,但是这为什么显示两个小方块啊,因为这里边我没写,没写实际上相当于是什么呀,一堆零一堆零,显示出来效果就是一个什么呀,空的啊,显示效果就是空的,所以这个position我们来说一下,表示的是我们一个起始的一个位置,写入的起始位置,但是一般这玩意儿主意是可选的啊,都是一般都不传啊,一般都不传,还有一个是我们这个Co什么呀,写入的编码,写入的编码,那我们说了默认是什么呀,UTF杠八,所以这个东西一般也不用传,因为我们一般是不是就需要utl杠八呀啊utf杠八啊好,那这个是我们说一个同步文件的一个写入,那待会我们来自己来尝试使用这种方式来写入一下这个文件啊,我们来停一下。
我来说两句