我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。

前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。

1.File类

File类是文件名和目录路径名的抽象表示,主要适用于文件和目录的创建、查找和删除功能;

构造方法有三种

1.直接通过给定的路径名字符串转换为抽象路径名来创建;

2.是通过父路径和子路径名字符串创建

3.通过父路径的抽象路径和子路径名字符串创建

简单来说第一种方法是直接通过String 类传给File类对象创建,第二种是通过String创建目录和文件组合在一起的,第三只是通过File抽象类创建一个父目录路径,再用String类创建子类文件名进行创建;

常用的方法:

·getAbsoultePath 获取文件的绝对路径

·getPath 将文件路径转换为字符串

·getName 获取文件或者是目录名

·length 获取文件或目录长度

绝对路径和相对路径的区别:

绝对路径是以根目录为开始的路径;

相对路径是以项目分目录开始的路径。

判断方法:

·exists 是否存在文件或者文件夹

·isDirectory 是否为目录

·isFile 是否是文件

创建功能方法:

·creatNewFile 创建新文件夹

·delete 删除文件夹(目录文件夹必须为空,否则不能删除)

·mkdir 创建此File为目录

·mkdirs 创建多级目录

目录的遍历:

·list方法 先将文件和文件目录存入到数组中,用for循环来进行遍历,这里是当前目录下的遍历,遍历出当前目录下的文件和文件夹名称

·listFiles方法 先将文件和文件目录存入到数组中,用for循环来进行遍历,这里遍历出的是文件夹和文件对象,获取对象后就可以获取更多的信息加以遍历(listFile遍历的文件夹必须是真实存在的否则返回的值是null值)

2.递归

递归是指当前方法内调用自己的现象,分为直接递归和间接递归

注意:递归一定要有一定的次数和条件限定来控制能够停下来,否则会持续递归和循环中的死循环一样是非常严重的错误,造成栈内存溢出。

构造方法不能进行递归,构造方法是用来构造对象的,如果递归就会一直构造对象。

递归对于上文写到的File类就可以很好的运用到,遍历出所有文件。

用listFile方法获取所有的目录文件和文件对象,存入到数组中,然后对数组进行for循环遍历判断isFile,如果返回ture则遍历出文件名,如果是 false 则将获取的相对路径 再次调用遍历方法再一次获取,这样就可以层层递归获取所有文件名称。

对于文件夹目录下的文件搜索,可以使用过滤器进行条件筛选后的过滤,像以什么文件格式结尾可以用endwith方法进行判断对遍历出的文件进行判断符合则输出,不符合则继续进行遍历操作。

关于过滤器这里要讲的是FileFilter接口中的accpet方法,返回值是boolean类型,可以通过匿名内部类来实现使用accpet方法,减少实现接口的实现类操作,这里要用到的方法还有getPath方法获取文件的绝对路径,和geName方法,还有判断是否是isDIrectory方法进行结合搜索,完成对条件筛选的过滤。

#Java学习之路——基础阶段二(第六篇)的更多相关文章

  1. #Java学习之路——基础阶段二(第一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  2. #Java学习之路——基础阶段二(第九篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  3. #Java学习之路——基础阶段二(第二篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  4. #Java学习之路——基础阶段(第六篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  5. #Java学习之路——基础阶段二(第三篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. #Java学习之路——基础阶段二(第十篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  7. #Java学习之路——基础阶段二(第八篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. #Java学习之路——基础阶段二(第七篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. #Java学习之路——基础阶段二(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

随机推荐

  1. Load balancer does not have available server for client

    最近在研究spring-cloud,研究zuul组件时发生下列错误: Caused by: com.netflix.client.ClientException: Load balancer does ...

  2. 如何深度复制一个javascript对象

    前言 最近有人问我,如何将一个对象复制一份,因为他遇到了一个需求,需要将后端获取的数据,保存一份,原始数据会因为交互而发生变化,最终需要对比两份数据的异同. 他是一个刚入行的小朋友,他的实现方式就是新 ...

  3. MAC下安装如何安装mysql?

    最近有位搞开发的朋友,估计是买了一个新的MAC本,他说不是很熟悉这个系统(什么人哪,太懒了!),于是让我给他装一下后台开发过程中经常使用的数据库软件MYSQL,今天给大家分享一下我的操作步骤以及出现问 ...

  4. MVC下 把数据库中的byte[]值保存成图片,并显示在view页面

    MVC下 把数据库中的byte[]值转成图片,并显示在view页面 controller中的action方法 //显示图片[AllowAnonymous]public ActionResult Sho ...

  5. Git打标签与版本控制规范

    前言 本文适用于使用Git做VCS(版本控制系统)的场景. 用过Git的程序猿,都喜欢其分布式架构带来的commit快感.不用像使用SVN这种集中式版本管理系统,每一次提交代码,都要为代码冲突捏一把冷 ...

  6. php与html实现交互的基本操作

    今天我们来实现php与html页面注册和登录的效果.中国有句古话叫: 第一步:我们来了解一些php的基本格式. <?php php代码 ?> 第二步:了解php与js的一些基本区别 我们在 ...

  7. js多个元素随机且不重叠分布在页面中

    最近,公司要做一个类似挖矿的项目,大概其是当用户登录进入首页后,如果用户有已经生成的原力值,则在其点击原力值后可以类似蚂蚁森林那样收集原力值,当用户将所有的原力值收集完毕后开始提醒用户新的原力值正在生 ...

  8. Django 基础一(安装和启动)

    在开始跟着本文学习Django进行Web开发之前你需要有一定的python编程基础,会用一些简单的Linux系统命令.如果你对python一无所知,请先去这个网站学习一下python编程的基础 Lin ...

  9. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

    com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after co ...

  10. css中固定宽高div与不固定宽高div垂直居中的处理办法

    固定高宽div垂直居中 如上图,固定高宽的很简单,写法如下: position: absolute; left: 50%; top: 50%; width:200px; height:100px; m ...