开发工具与关键技术: MyEclipse 10、Java语法
作者:邓婵
撰写时间:2019年 06月 24日
File类:将文件系统中的文件和文件夹封装成对象,提供了更多的属性和行为可以对这些文件和文件夹进行操作。这些是流对象办不到的,因为流只操作数据。比如可以通过调用File类中的方法实现创建、删除、重命名文件等操作。而File类的对象主要用来获取文件本身的信息,但是File不能访问文件内容本身,如获取文件所在的目录、文件的长度、文件的读写权限等。
通过File类使用三种构造方法来创建文件对象:
1、通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。
File file = new File("E:/E/BaseDataType.java");
2、根据定义的父路径和子路径名字符串(包含文件名)创建一个新File对象。
File file2 = new File("E:/E/","BaseDataType.java");
说明:括号中第一个为父路径字符串,如E:/doc。第二个为子路径字符串,如BaseDataType.java。
3、根据抽象路径名和路径名字符串创建一个新File实例。
File dir = new File("E:/E/");
File file3 = new File("BaseDataType.java");
注意区分下面两种不同的写法:
写法一:File dir = new File(".");
写法二:File dir = new File("/");
说明:这两种写法看着很相似但区别就很大,第一种写法就认为获取的是当前目录,第二种写法认为是根目录。
File类中比较特殊的方法:
String[] list() :列出指定目录下的当前的文件和文件夹的名称,包含隐藏文件。
说明:如果调用list方法的File对象中封装的是一个文件,那么list方法返回的数组为null。如果封装的对象不存在也会返回null,只有封装的对象存在并且是文件夹时,这个方法会才有效。
递归的定义:递归就是在栈内存中不断的加载同一个函数。当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的功能元素结果来确定。其实也就是函数自身调用自身,但递归的次数不要过多。
下面我们来看看例子如何通过递归和File类打印目录的所有子目录和子文件,相关代码可参考如图下所示:
思路说明:首先要在主方法中创建目录的File对象,然后写一个方法判断该文件是否存在,如果存在声明StringBuilder类来接收,再判断该文件件是否是一个目录,再然后把该文件进行for循环,通过递归调用自身,最后再到主方法去调用。
输出结果如图下所示: