00:00
来,我们接着往下看啊,我们这种方式啊,有一个什么样的缺点呀。我们这种方式是不是效率比较低啊各位?就拿一个字节。这种方式是不是效率比较低一些?一次就读一个字节,你想。这个文件里面存的数据是ABCDEF。然后你怎么着啊,这是硬盘。对不对,然后这个是内存。是吧,啊内存然后怎么办呢。读一次。是吧,哎,然后怎么着啊,再读一次吧。是不是,哎,那么我们这块是不是等于说我们内存和硬盘交互的就是太频繁啊。你好,想想你在超市买了六个苹果啊。然后你准备怎么带回家呀?你把第一个拿到家是不是?
01:01
然后呢?再跑超市,是不是再拿第二个对不对。对吧,哎,然后怎么着啊,在跑超市拿第三个呗。你这效率太低啊。是不是效率太低啊?那有没有这种方式说我们一次可以读取多个的,就是说比如说超市里边有六个苹果,我们有个塑料袋吧,把这六个苹六个苹果装到塑料袋里边。拎着塑料袋回去了。我们在上只跑一次,就是在上啊,就是在这个上我们只跑一次。或者我们在上跑的次数少一点。所以这种一个字节一个字节读取方式啊,它可能这个内存和硬盘交互的太频繁。啊。就大部分时间都耗费在交互上面了。啊,分析这个程序的缺点啊。一次读取一个自己败。这样内存和硬盘交互太频繁。太频繁啊,基本上基本上时间或者说资源都耗费在交互上面了。
02:09
对不对,哎,能不能。一次读取多个字节呢?这个答案是可以的啊,所以讲了半天,这种方式我们不用各位啊,不用。所以说我告诉你一会儿我讲讲讲讲,你就练最后那一个例子就可以了。啊,就这个意思,所以你不用太着急啊,大家看这个瑞的方法呀,它有一个这样的一个问题是不是啊,你看这里。有一个瑞的方法,是不是这个瑞的方法是往BY的数组里边读。BY的数组呢?假如说是四个长度,你一次就可以最多读取四个字节。你可以往这儿传一个bad数组。各位。啊,可以传一个BY的数组啊。一次读取最多读多少个呀?读这个BY的数组的一个长度,你比如BY的数组是十个长度,那么表示你一次最多可以读取十个字节。
03:00
啊,这个RAID方法,所以这块呢,咱们研究一下这个方法各位。所以我们再次对我们这个项目呢,进行或者是这个程序啊,进行一个改造啊来咱们继续新建一个class,我们叫file input stream test03,那么这块呢,我们是主要是对这个方法进行一个学习啊,这是一次读取一次最多啊读取什么。b.Les个字节减少什么呀,硬盘和内存的交互,内存的交互啊,提高程序的执行效率。一次读取B点死个字节。最多啊,读取这个B点四个字节,这是往什么呀?往BY的数组当中读啊,往BY的数组当中当当中读啊。
04:04
我们还是老规矩啊。等于now是不是,然后呢,你有一个什么呀,File,那么这块呢,我们来看一看啊。假如说我们用相对路径会是怎样?是吧,来我们加个TRY开,我们先加上find,我们加上去啊,然后在这里if now,如果这个要是不等于空的话,我们给它关闭是不是,哎,Close,然后呢,加一个TRY开处理一下,那么这块呢,这是一个创建一个流,那么这个路径如果是相对路径会怎样呢?相对路径的话呢。相对路径一定是从当前。所在的位置作为起点开始找对吧?相对路径一定是从当前所在的位置作为起点开始找,那你比如说我现在在这随便写一个啊temp。
05:00
然后执行一下大家这个文件是不是不存在啊。对吧,这个文件不存在。这个文件在哪儿呢?这个文件。这个文件放到哪它就存在了呢。对吧,那我们尝试一下啊,假如说我们在这个src下边建一个。就在S2C下边啊,建一个文件。叫各位啊。这个啊,来走。建T文件,T文件啊,TXT。来,直接OK就行了。这个time file这个文件呢,里边ABCDEF。那你说建好之后呢,点右键我们执行一下你看。还是找不到指定的文件,对吧。那这个文件。我刚才在RC下边啊,那我在这个项目下面呢,在这个CHAPTER23下面新建呢。
06:01
叫呢?ABCDEF。那如果这个文件现在没有在src下边,Src下边刚才建了个文件,我在SCCC外边,我在这个项目下,不是这个项目啊,错了,不是这个项目,这叫这个模块啊,在这个模块下建了一个time,我再执行一下,看行不行。哎,还是不行。是吧,那这个time file,它那个默认的当前路径在哪?就是说idea默认的当前路径是在哪了,就是idea啊默认的当。如果你知道这个的话,这个问题不就解决了吗?是不是,哎,那么这个文件你看他一直找不着,在哪放到哪,他找不着都找不着。是不是你看放到这个模块下边不行,放到src下边不行,那这个文件我我这样啊。我放哪儿了?我放到这个工程的下边。就这个工程啊,这不是个空的工程嘛,一个模块两个模块,三个模块四个模块吗。对吧?哎,那这个工程来我这样,我把它拿过来啊放哪啊放到工程下边啊来工程在哪呢?在C盘下,然后有一个program file,然后不是program file啊有Windows,然后不是Windows有个用户。
07:14
用户这块有一个administrator,下面有个idea。大家看这个是不是一个工程。加va SE是一个工程吧?这里边是不是模块模块模块模块模块模块啊,现在这个模块chapter,这个23下边是不是有一个文件叫temp。我把这个文件拿过来啊,我放到这个工程的下边这个工程,你看Java SE工程吧,我放到这个所有模块的外边,我粘贴一个文件放这。然后呢,我在这里执行一下。还报不报这个错,大家看看啊,还是这个程序没动啊,来我们走一下。哎,你看。程序编译没报错,运行他也没有再出那个异常说明这个文件是不是找到了。对吧,从通过这个在这里的测试,大家得出一个什么结论,Idea当中默认当前路径是哪?
08:04
工程project的根就是idea的。默认当前路径。注意啊,在idea当中,默认的当前路径是工程的根。好,大家看这里是不是有一个文件呀。对吧,这个文件是不是我刚粘粘到这儿的。我在Java SE这个下边粘了一个这样的一个temp file,大家看这个idea里边是不是这里就出现个文件呀。这TIME2这个CHAPTER23里面有一个文件,Src下有个文件。对不对。是吧?哎,这个大家理解吗?记住啊。在idea中,默认的当前路径是。Project的根。啊。在idea中默认的当前路径是project跟。
09:04
啊。这个就是project根,这就是整个工程的根,根在这儿加SE,这就个工程。啊,这工程家有很多模块是不是,哎很多模块,那么现在如果说我想干什么呀,想找到这个文件各位。我这该怎么写?我想找到这个文件。假如这个文件,我给他命个名。叫做二吧。然后想找到这个文件,我这个路径应该怎么写?应该是这个文件在这个下边,这下边有这个文件,所以呢,应该是这怎么写啊叫chapter什么23下边有一个什么叫做temp file2是不是应该这个呀,因为这个T23是不是在我们的Java SE下边。默认当前路径,从这作为起点开始往后找吗?
10:01
这个位置作为起点,下边有个拆2323,下边有什么呀,TIME2嘛,所以这边这个路径应该这样写,你看再执行一下,你看会不会出错。就没事吧,哎,没事,说明这个文件找到了呀,那如果是src下面这个文件有一个叫time,假如说这个文件,我们现在呢,给它改一下名字啊。这个名字我们叫做三。啊。呃,Do,这个文件名叫TIME3,那现在我想找到这个文件,这个文件S2C下面。那如果是这样的话,我这个应该怎么写啊,应该是CHAPTER23,还是以这个开始,然后S2C下面有一个type file3啊,这个文件是不是现在就是这个位置的文件啊。啊,就这个S2C下边这个文件吗?调包执行一下来看看能不能看能不能不能找到。也没报错是不是,那如果在。com下边有一个背景po Java s SE下有个IOIO下呢,在这儿有一个文件。这里有个文件啊,叫什么呀,四。
11:03
我随便建个文件啊,ABCDEFF有个文件,然后接下来干什么呀?我这个文件的路径该怎么写啊?啊,该怎么写,各位。是chapter i23下边S2C下边有什么come BJ power node,然后加了SE下边IO下边有一个什么呀,它它们发有几啊四吧,是不是这样写呀,对吧?哎,执行一下你看这个路径是这样写的。你如果是相对路径的话,得这样做好大家看这个程序,诶,IO找不到了,说CHINA23S2COM BG power node加YSEIO下面一个temp。File。四系统找不到指定路径看一下啊嗯,哦。Com的Java是吧,不是Java SE啊,这写错了。是Java Java目录下有IO包,IO包下有什么times来再执行一下。你看这次应该就能找到了,你看是不是就没事了,没事了,那这个呢,我主要是想和大家聊的一件事,是什么事呢?就是大家记住啊,在idea工具里边,它默认的当前路径是工程的根。
12:10
是工程的根,各位啊,是整个你加了SE这个工程。这工程有很多模块嘛。以工程作为根。从这作为起点开始往下找。啊。好,你看这样写就没问题吧,Type file4嘛,这个这个文件是不是好,咱们在这里啊,就捎带着把这个文件的相对路径再说一下。啊。
我来说两句