正如我们介绍集合类的情况,今天仍然开一个专题专门来介绍File类,后续的内容在不久的未来会在本片文章中补充,现在我们开始介绍。
一. 简介
File类也是是输入io包下的一个子类,在我们使用File类的过程中需要导入IO包,File类专门用来文件的有关操作,也就是我们可以摆脱对控制台的掌控,来对文件与文件夹进行操作,在学习File类之前我们需要学习几个英文单词:
- file 文件的意思,目前指的主要是带有后缀名,而且带内存的文件。
- directory 区别与文件,指的是目录,也就是我们所说的文件夹,不占内存。
- path 路径
在学习中遇到有关这三个单词的方法,我们可以大体知道其说的含义。
二. File类中的静态成员变量
- pathSeparator 和pathSeparatorChar 与系统有关的路径的分隔符,在不同的系统中会有不同的常量,在windows中是;(在配置环境变量的时候我们遇到过),在linux中是:两者的区别是,前者是字符串,后者为字符。
- sparator 和sparatorChar 与系统有关的文件名称分隔符,windows中是,在linux中是/,(路径中经常出先),两者的区别同上。
三. 相对路径与绝对路径
绝对路径:从盘符开始的完整路径。
相对路径:相对于根目录的简化路径,根目录可以省略。
注意: 路径是不区分大小写的,而且!/中在字符串中意思是转义字符,我们在添加字符串时要用//
四. File类的构造方法
- File(String pathname) 通过添加字符串创建File对象。
- File(String parents,String Child) 创建子串和父串,便于操作,在toString中会联合打印。
- File(File parent,String Chiled)同2,但是父串时File类,可以用File类中的方法。
五. File类中的常用方法
1. 获取方法
- String getAbsolutePath()
获得绝对路径 - String getPath()
获得路径(创建时的) - String getName()
获得最后一个名字 - long length()
获得文件大小
2. 判断方法
- boolean exists()
是否存在 - boolean isDirectory()
是否时目录 - boolean isFile()
是否是文件
3. 创建删除方法
抛 boolean creatNewFile()
创建一个文件
- boolean mkdir()
创建一个目录(不创建父目录) - boolean mkdirs()
创见一个目录(包括父目录) - boolean dirs()
删除File类表示的类
4. 目录的遍历
- String[] list()
将目录拆成字符串 - File[] listFile()
将字符拆成File类
5. 文件过滤器
File类中的两个与ListFile重载的方法
- File[] listFile(FileFileter fileter) 有过滤性的拆解这个文件,其中的FileFileter是一个接口我们通常要创建一个实现了该接口的类FileFileterImpl,然后用listFile(new FileFileterImpl)。
我们在实现该接口的accept方法,如果是希望通过,则return true,否则return false - File[] listFile(FilenameFileter fileter)区别与第一向,该重载方法是用来过滤文件名称,实现的方法是accept(File dir,String name)
public class FilefilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory())
return true;
return pathname.getName().toLowerCase().endsWith(".java");
}
}//FileFilter的实现类
public static void main(String[] args) {
File f1=new File("E:\\gwl_J\\bbb");
method(f1);
}
private static void method(File f2) {
File []s=f2.listFiles(new FilefilterImpl());
// for(File s:f2.listFiles()){
// if(s.isDirectory())
// method(s);
// else
// System.out.println(s);
// }
for (int i = 0; i < s.length; i++) {
if(s[i].isDirectory())
method(s[i]);
else
System.out.println(s[i]);
}
}