00:00
欢迎大家继续观看上硅谷格斗技术视频,这节课我们继续讲解,通过文件输入的方式对文件进行操作。文件数本质是一个有层级结构的文件集合,咱们也可以借助于project对象的fair tree这个方法来创建一个文件数对象,然后调文件数对象的方法,然后对文件进行操作。比如。我们可以借助于project对象的fair tree这个方法。然后我需要给他传一个参数,这个参数用来设置文件所在的目录,然后他会得到一个文件数对象,咱们这里使用文件数对象。对这个方法返回值做一个接收。比如我们对src目录下的main目录进行操作。然后通过fair这个方法得到了一个文件数。然后得到文件数对象之后我们可以调它的include方法。把符合条件的文件给它留下,或者调xceq的方法,把不符合条件的文件给它排除掉,我们也可以调它的其他方法,比如说filter,对某些条件,某些符合条件的文件进行过滤啊,也可以调它的matching。
01:09
啊,当然我们也可以调它的for each或者feels。说把它转化成一个文件的集合,对它进行操作。OK啊,来咱们这里,我就调for each。它需要一个consumer对象,Consumer,我使用拉姆达表达式对它进行简化。然后在这里边输出文件的名字。咱们看一下src目比下。它这里有一个压缩包,然后在这里边还有一个TXT结尾的文件,两个1.java结尾的文件来,所以一共是四个文件。啊,一个压缩包,一个TXT文件,两个加入文件没有问题。OK啊,当然咱们也可以啊,调文件数对象的这个for意识方法之前,先调它的include方法指令,把哪些符合条件的给他留下。比如说我们这里把。
02:06
一点加Y结尾的这些文件给他留下,此时我们再来运行。这里只有两个,1.java结尾的文件。啊,所以没有问题,当然你也可以调它的SQ的方法。把。符合条件的给它排除掉。这样也是没有问题的。OK啊,这是通过文件数的方式对文件进行操作。再一个通过文件输导方式对文件操作的时候,咱们这里有好几种使用方式,第一种就是啊,传一个目录的方式,其实第二种还有一个我们还可以传一个map。然后。在这个map里边指定一些具名的参数。比如我们可以指定你对哪个目录进行操作,哎,用include指定啊,把哪些符合条件的给他留下,我们也可以啊,用X include的指定,把哪些不符合条件呢给它排除掉。
03:01
OK啊,总之课件里边的也是啊,这三种方式。第一种就是目录,第二种就是这个。居民参数第三种是必包的方式,必包咱们这里也是有的。是吧,当B包作为方法最后一个参数的时候,B包也可以啊,移到方法外边就是这个。啊,你在这个背包里边设置include,这个S也是可以的。OK啊,这是通过文件输入等方式对原件进行操作。还有我们也可以对文件进行啊复制操作。OK啊,如果我们想对文件进行复制操作的话,我们需要制定一个任务,然后指定它的类型为啊,Copy。OK啊,然后咱们就可以使用copy类型的里边的from或者into方法了。然后这个from后边可以指定。要复制的文件或者目录。它后边可以跟一个文件,也可以跟一个目录,还可以跟一个压缩包。
04:03
如果他后边指定的是一个文件的话。啊,表示咱们将这个文件copy到这个目标目录,Into后边指定的是目标目录。如果from后边指定的是一个目录的话,表示把该目录下的文件啊或者子目录给它copy到目标目录,但是这个目录本身它是不复制的。他只复制目录底下的内容。啊,那如果from后边是一个压缩包呢,它就表示他会把压缩包中的内容给他复制到目标目录。啊,压缩包本身也不复制。OK啊,然后这里给大家举了一个例子。我们定义了一个任务,然后它可以同时copy一个目录,也可以啊,Copy一个文件。啊,也可以拷贝一个压缩包,然后到目标目录来,咱们给大家看一下。比如我这里定义了一个任务,然后是copy类型,然后让他copy sc web APP目录,或者这个index,点这面页面。
05:05
需要注意的是,如果咱们copy的这个目录,比如说web APP目录,或者说这个文件,一旦文件不存在的话。这个任务会直接忽略,他也不会报错。OK啊,在这里咱们还copy了一个压缩包,比如说src目录底下的这个压缩包,这个压缩包在s RC main目录底下不存在,咱们这里存在一个desktop,我这里给它换成desktop。就可以了。这个desktop里边的内容是啥呢?来,咱们可以把这个给它解压看一下啊。它里边实际上就一个A1.tt,一个DD.java啊有这么两个文件。OK啊,咱们from后面如果是一个压缩包的话,它表示只会copy压缩包里边的内容。吧,就是那个a.ta。啊,文件还有一个点加入文件给它copy到这个目标目录。来,走。
06:01
这样在build的目录底下,它这里就有一个这个目录,在这个目录底下就是copy过来的文件,一个a.TD,一个d.Java没有问题。这两个文件都是来自于啊这个压缩包的。OK啊,当然咱们在copy的过程中也可以指定。或者X把符合条件的留下,把不符合条件的给它排除掉,比如咱们再来。比如这一次我针对的是src目。然后对这个类目进行复制的时候,我用include。来指令。把符合条件的留下,比如说1.java结尾的。此时,我们再来。这样我们先清空一下build目录。然后再来。执行这个任务。
07:01
你再看。这样在build的目录底下。啊,它就会有这个这个目录,在这个目录底下就会有那些拷贝过来的加入文件,咱们一共有两个加入文件没有问题。OK啊,当然你也可以使用X输入的排除。某些不符合条件的。比如说排除。这一次我排除以Java结尾的。是吧?此时我们再来清空一下build目录。然后咱们先来看一下src底下。除了这个一点,Java结尾的文件还有谁?是不是还有一个压缩包,还有一个。a.TT。啊,来,此时我们来看。
08:00
这一次你再看。在这个目录底下,是不是他把压缩包复制过来了,同时把那个a.ta也复制过来了。没有问题。OK啊,这是啊。制定一个任务,让他复制。文件或者目录看以及压缩包。这个。就是当咱们在复制文件的过程中,还可以对文件进行重命名,咱们使用rename这个就可以了。举个例子。比如说这一次。我可以在复制过程中啊,我可以直接用rename指令。对这个文件进行重命名。比如说这一次我复制SC底下的。这个文件。比如说应该是SCM目底下。叫。Java目录底下的,然后。com目录底下的。艾特硅谷目录底下的。
09:01
aa.tst,我把这个aa.tt。是吧,这个A给它替换成啊艾特硅谷。也是可以的。此时我们再来试。我们先。然后再来执行这个任务。此时来到这个build目录。此时你看。是不是确实在这个目录底下生成了一个艾特硅谷这样一个T文件没有问题。OK啊,当然啊,咱们对文件或者目录进行复制的时候,可以自定义这种任务也可以啊,使用project对象的copy方法。啊,同样在这个copy方法里边,咱们也可以使用from或者into icec crude这些关键字。啊,指定要复制哪些文件,复制到哪个目录以及啊。把哪些符合条件的给他留下,把哪些不符合条件的给他排除掉。此时我们来试一下。
10:00
你也可以直接在这里看。在这个project对象这里,确实有一个靠背方法。然后它这后边需要传一个B包作为参数,B包作为方法参数的时候,它可以把它提取到括号外边,所以啊,这个B包就是写在外边的。啊。然后在这里咱们对sc main下边的resources目录下的一个文件进行了复制,咱们这里看看有没有sc main目录底下啊,咱们这里是没有的是吧。没有,咱们就可以把它换成。换成这个这样我们自己创建一下也行。来走,比如说这是啊。上硅谷。OK啊,行。然后咱们复制一下这个。我怎么执行这个project对象的copy方法呢?咱们只需要执行great build的指令,在执行这个指令的时候,它会要自动调用product对象的这个方法,然后啊,把它复制到咱们的build目录底下。
11:11
来,你看。这一次是不是在build目录底下确实有这个DD.t啊,而且啊,里边的内容也是没有问题的。搞定。这是文件的复制,OK,文件的复制啊,两种方式,一种是自定义任务的方式,一种是使用project对象的copy方法的方式。最后就是对文件进行归档。当我们把项目打包成一个袜包、zip包、踏包之后,想要进行发布的时候,啊,那咱们就需要这些。Zip t Java类型的任务来完成。所以如果咱们要想实现文件的归档,咱们需要制定一个任务,然后指定它的类型为zip类型、JA类型。或者说套类型,腕类型。OK啊,然后指令。
12:00
这个咱们要对哪个目录或者哪个目录下的文件进行啊打包。然后into,就是打包到哪个目录,或者说保存到哪个目录。然后base name呢,就是指定打包之后的这个文件名叫啥。OK啊,来咱们看一下。复制。单引号。然后这里给它换成单引号。单引号。OK啊,比如咱们这里就是对SC这个目录底下的内容,然后进行打成zip包,打成zip包之后它的名字叫my game.zip。然后打成zip包之后放在这个build目录底下啊,这个声明了这个任务之后,咱们执行一下这个任务走。然后咱们来这个build目录底下看一下,在这个build目录底下,它有一个distribution这个目录。
13:00
我们打开这个目录,在这个目录底下,它确实生成了my game这个zip压缩包。OK啊,没有问题。同理,如果咱们想打成架包,那你这里声明价类型的任务或者T类型的任务也是可以的。OK啊,行,这这个。然后有了压缩包之后,如果我们想要对这些压缩包进行读取操作,诶,咱们可以使用zip。后边跟这个压缩包的路径和名字。啊,你也可以使用。无论是zip tree还是tree,最终得到的这个对象实际上都是一个fair tree类型的。就是文件数的类型,文件数对文件的操作,咱们前面已经讲过了。有兴趣的同学可以再回顾一下刚才讲的。OK啊。这是。对文件操作的这几种方式。
我来说两句