#Java学习之路——基础阶段二(第六篇)
我的学习阶段是跟着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学习之路——基础阶段二(第六篇)的更多相关文章
- #Java学习之路——基础阶段二(第一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第九篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段(第六篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第三篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第十篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第八篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第五篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
随机推荐
- 拇指玩」制作的「谷歌安装器」app
作者:匿名用户链接:https://www.zhihu.com/question/57468448/answer/153000587来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- Spring Boot中使用Actuator的/info端点输出Git版本信息
对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health./metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读<Sprin ...
- canvas学习笔记(一)
canvas是HTML5的新元素之一.使用canvas可以直接在HTML上进行图形操作,所以它具有极大的应用价值.canvas元素本身不具有绘图能力,它需要借助JavaScript来实现绘图功能. c ...
- Windows 使用 Visual Studio 编译 caffe
说明:最近看 caffe 发现在 github 上下载的源码没有windows版本的,需要自己生成项目文件才能用 Visual Studio 编译,这里记录一下生成Windows项目文件的方法以及编译 ...
- BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集 Description 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M( ...
- awk的递归
想来惭愧,之前写的一篇文章<用awk写递归>里多少是传递里错误的信息.虽然那篇文章目的上是为了给出一种思路,但实际上awk是可以支持函数局部变量的. awk对于局部变量的支持比起大多数过程 ...
- C++实现离散数学的关系类,支持传递闭包运算
#include <vector> #include <cassert> #include <iostream> using namespace std; clas ...
- [译] 理解 LSTM 网络
原文链接:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 吴恩达版:http://www.ai-start.com/dl2017/h ...
- Netty4.x整合SpringBoot2.x使用Protobuf3详解
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会介绍下用法,至于Netty在netty 之 telnet HelloWor ...
- Java核心技术梳理-基础类库
一.引言 Oracle为Java提供了丰富的基础类库,Java 8 提供了4000多个基础类库,熟练掌握这些基础类库可以提高我们的开发效率,当然,记住所有的API是不可能也没必要的,我们可以通过API ...