00:00
再看一个关于写文件的应用实例,那这个应用实例呢,是这样一个要求啊,就是编写一个程序,将一个文件的内容写入到另外一个文件。注意这两个文件已经存在了,就说如果说现在我们有这个要求,把一个文件内容导入到另外一个文件。那这个怎么完成呢?我们这里面要求用IO包里面的read file和这个right file来完成。那这个就比较简单了,来,我们一起来完成这个案例。我们一起完成这个案例啊,来,同学们跟着老师思路。那这个呢,是我们写的写文件操作的这个第二个应用实例。那给他一个标题。好,他说了这个地方呢,使用是IOUR包里面的两个方法来完成,对吧,那么我们来走一下代码。
01:00
代码实现跟着老师思路啊。好,那我们也算是个练习吧,直接在这个文件夹里面建一个EXE05。对不对。好在这面写一个文件叫main.go。然后打一个包包。在这里我们打一个包。没问题吧,同学们。好,这个呢,我们现在首先先写一个文件,就是说我们假设有这么一个需求,将D盘下面的哪个呢,ABC.txt这个文件的内容。这个文件内容导入到,导入到这个E盘下面的。KK k.TXT里面去,当然这个文件呢,事先我们先把它创建好,当然你也可以也可以做一个动作,就是说如果没有的话,是不是我们也可以创建呢。KKK。好,目前这个文件是空的啊,大家看是零个字节。
02:02
那现在呢,我们要开始倒,那第一步该怎么办呢?第一步首先。首先。首首先啊。首先,将。这个这个文件。的内容读取。内容读取到。读取到内存对吧,这是第一步,第二步呢,将这个内容。得取,读取到内存。然后将读取到的内容将。读取。读取到的内容写入。写入E盘的KK k.TXT文件是这个思路吧,好,所以说呢,我们写两个文件,一个是fair,一。B1这个文件的路径。对吧,Pass。第一个文件的路径写清楚,是在D盘下面aa.abcabc.txt文件。
03:06
那么第二个文件就是待会儿呢,我们要写入的这个文件呢,在E盘下面的。KKK文件。那大家看我怎么操作,首先第一步呢,我们先把这个文件读出来,读出来非常简单,因为我们用的是这个UT包里面的东西,所以说我就直接这样io.ut。IO斜杠啊,U t util对吧,那现在呢,我们就用这个包里面的一个方法。什么方法还记得吧,是不是就是直接read file?把文件名,把文件路径写一下就可以了,这样子一下就把东西读出来,那么首先呢,我们把这个内容读到content。是吧,他是一个content。那么这边有可能有个错误,所以说把这个错误呢,也读到。没问题吧,好,现在我们做一个判断,如果这个near它A,它不等于near,说明读文件出错了。
04:08
说明。说明读取。读取文件有错误,那怎么办呢?咱们把这个错误信息输出来就退出了。对吧。就说open。就是这样做啊,Read about。Read。Five zero。等于输出来就行了。那下面呢,就不能走了,因为你文件读取都出错了,那显然就没有办法再往下面走了,对吧,那么大家还回忆一下,嗯,这个content读出来它是一个BY切片是吧?它是一个BY的切片,说读出来过后呢,下一步。我们可以把它写进去,那写进去的话呢,我们用IoT这个包里面,它有个方法叫right。啊,那么我们来看一下这个函数。
05:01
打开看一下。这个IO72包里面确实有一个red file red file是返回一个带的切片和一个error,刚才我们已经处理了他还有一个right file。Right呢,第一个是要把内容写到哪个文件里面去,第二个呢,是一个BY切片,这个切片就是刚才那个对吧,所以说你这呢也可以写成这个data,这样更好一点,它是个切片对吧。好,那有了这个东西过后,我们就知道怎么写了。第一句,首先我要往这个文件里面写。第二个写入的是title。第三一个还有一个参数,大家注意观察,大家有没有发现它还有一个参数,这个参数呢,是文件的这个模式,前面我们用过了,对吧,这个呢,其实我反复讲过,在Windows下面呢,这个fire mode是无效的,所以说你可以随便写一个值,比如说0666就行了。啊,那就写进去,它这块有没有返回值,我们看一下。
06:01
我们看看有没有返回值。大家看到它这边也返回一个L。那有没有error,我们可以把它搜一下。ER。对不对,好ER,那我就做这样一个动作啊,如果L不等于那样。不等于零,我们就提示,我们就打印一句话,说什么呢?写文件出错了,Print。这样写。对不对,叫做right。Fire。那么具体这个A信息是什么,我们把它输出来。是吧,这个没有毛病,那这里面大家看到read file和red file呢没有,它是影视的打开和关闭文件的,因此呢,这个代码就写完了。就写完了,好,我们来玩一把。看看这样子是是否能够成功啊,是否能够成功,大家看哪没写错了。哦,这边应该是个F。
07:01
四个F吧,西杠恩。因为你这里面带的有这个格式化嘛,所以说叫F这样就OK了。那朋友们跑一下诶,怎么还有错误,是哪里错误。这两个没有用到,没有用到就把这两个包删了吧。来CD点点,然后CD到EXE05。然后go。让main.go跑起来。我们可以看到没有报任何错误,那打开我们的E盘,我们发现这个K里面有东西没有发现,没问题,东西全部导进来了,对吧,原先是林哥自己现在有内容了。好,这个就是我们这个练习的一个答案,好,我把这张代码呢给大家整理一下。对不对,还是比较简单吧。还是比较简单,就是让大家用一下。把代码整理一下,OK。把这一段读文件和写文件的一个综合应用呢,我们就说完了,我们把它放在这个位置。
08:07
对不对,好,我们接着往下看,那么我们在进行文件操作的时候呢,我们有时候会有这样一个功能,就是判断文件是否存在,这个呢在我们做项目的时候经常会用到。判断这个文件或或者是目录有没有存在,大家看go浪判断文件或者文件夹是否存在它呢?用的一个方法是什么方法?用的是os.s ta这个函数。那这个函数我们来看看他是干什么的,来打开我们的文档。OS。说一下OS包包里面。有一个函数。有一个函数。我们输一下ST。STAT。好,找到了吗?往下往下走,找到了,大家看这里。看这里进去看一下。S stad返回一个描述name指定的文件对象的file ino这个O,如果指定的文件对象是一个符号连接怎么怎么样啊,大家看这里主要是看这L。
09:11
如果说这个文件呢,在读取的时候,如果你打开这个文件啊,或者读取的文件有错误,那么这个error里面呢,会包含一些信息,哪些信息我给看一下。看,大家看这里,如果返回的错误为逆。这说明文件夹和文件是存在的,就说他如果读取没有问题,那么整个这个这个返回的这个L。就这个error呢,这个OS点三返回这个error为空。为如果返回的错误类型。通过这个is not exist判断为错误,说明这个文件夹是不存在的,还有一种呢,如果返回的错误为其他类型,则不确定是否存在。基于这三个。这三个。这个规则我们写了一个函数,这是我们自己写的一个函数。
10:01
我们自己。写了一个函数。那么这个函数可以干什么呢?可以根据你的这个输入,比如说你输一个输一个路径过来,或者输一个文件过来,那么我就可以判断你这个目录或者是你这个文件是否存在。我怎么做的啊,大家看,首先呢,我调用os.stand把这个路径传进去。那么我根据这个L来判断,如果这个L等于L。这说明文件存在。文件存在。那么。文件或者目录或者目录存在,那这样子的话呢,我返回的这个波值为true error呢为near,看清楚没有。那如果说他这个error不等于near,那我就判断它这个是不是一个is not exist的错误,如果我判断完了过后,我发现这个error就是。
11:04
Is not exists这个错误,那么我就返回一个false,返回这个false呢?同时这个L仍然是near。那就是说我这个地方,就根据这个布尔值是为真还是假,就可以判断你这个文件是否存在。对吧,还有一种情况就是。这个有有错误了,但是呢,它并不是这个is not exist错误,那么这个时候我我就把这个错误原封不动的返回。能理解这个意思吧,所以说后面同学们想去判断一个文件。或者一个目录是否存在,可以使用这个函数来完成。怎么办呢?你把路径给我传进去。把路径传进去,根据这个返回的这个布尔值来判断,如果为真,说明目录存在,如果为假,说明这个目录或者这个文件不存在,如果它为甲,同时还有一个error。
12:00
那就说明。可能是其他错误信息,明白吧,说这个函数呢,大家可以去用一用我就不再写了,大家这个函数也比较简单对吧,也比较简单,我就直接告诉大家,同学们呢,可以在需要判断。目录或者文件是否存在时,可以用这个函数来玩一把,那只要不出什么意外,一般来讲哈,一般来讲这个文件。这个stand打开一般来讲也是因为这个文件存在或者不存在导致的错误,因此一般来说都是true和false来判断就足够了。就足够了,好,那我把这一块呢,我就不去测试了,同学们我就直接拿到笔记里面去。好的,那现在呢,我们又写了一个案例,这个案例呢,是判断文件或者目录是否存在,那具体来说。就是刚才老师讲的这一段代码。重点。就是这个。对不对,就这个函数,大家用这个函数来玩一把就行了。
13:03
我把它整理一下。好了同学们,那关于我们这一个就是把一个文件进行拷贝,还有判断文件或者目录是否存在呢,我们就先给同学们介绍到这里,大家把这两块把它消化一下。
我来说两句