File类
File类:文件和目录路劲名的抽象表现形式
Java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作
我们可以使用Flie类的方法
创建一个文件/文件夹
删除文件/文件夹
获取文件/文件夹
判断文件/文件夹是否存在
对文件夹进行遍历
获取文件的大小
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
重点:记住三个单词
file:文件
directory:文件夹/目录
path:路径
静态成员变量:
static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串
static char pathSeparatorChar 与系统有关的路径分隔符
static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串
static String separatorChar 与系统有关的默认名称分隔符
操作路径:路径不能写死了
绝对路径:是一个完整的路径(从C盘或者从D盘开始)
相对路径:是一个简化的路径
相对指的是相对于当前目录的根目录
如果使用当前目录的根目录,目录可以简化书写
注意:
1.路径是不区分大小写的
2.路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,;两个反斜杠代表一个普通的反斜杠
File的构造方法:
Fie( String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
参数:
String pathname:字符串的路径名称
路径可以是以文件结尾,也可以是以文件夹结尾
路径可以是相对路径,也可以是绝对路径
路径可以是存在,也可以是不存在
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
File的构造方法:
Fite( String parent, String child)根据 parent路径名字符串和chid路径名字符串创建一个新FiLe实例
参数:把路径分成了两部分
String parent:父路径
String child:子路径
好处:
父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化
FiLe类获取功能的方法
public String getAbsolutePath():返回此FiLe的绝对路径名字符串
public String getPath():将此FiLe转换为路径名字符串
public String getName():返回由此Fite表示的文件或目录的名称
public Long Length():返回由此Fie表示的文件的长度
FiLe判断功能的方法
public boolean exists():此Fie表示的文件或目录是否实际存在public boolean isDirectory():此Fie表示的是否为目录
public boolean isfile():此Fie表示的是否为文件
FiLe类创建刪除功能的方法
public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件
public boolean delete():删除由此File表示的文件或目录。public boolean mkdir():创建由此File表示的目录
public boolean mkdirs():创建由此File表示的目录,包括任何必需但不存在的父目录
FiLe类遍历(文件夹)目录功能
public String[] list():返回一个 String数组,表示该FiLe目录中的所有子文件或目录
public File[] llistFiles():返回一个File数组,表示该FiLe目录中的所有的子文件或目录
注意:
List方法和list Files方法遍历的是构造方法中给出的目录
如果构造方法中给出的目录的路径不存在,会抛出空指针异常
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
递归:方法自己调用自己
递归的分类:递归分为两种,直接递归和间接递归
直接递归称为方法自身调用自己
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
注意事项:
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
在递归中虽然有限定条件,但是递次数不能太多。否则也会发生内存溢出
构造方法,禁止递归
递归的使用前提
当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归
FileFiter过滤器的原理和使用:
需求:
遍历c:\abc文件夹,及abc文件夹的子文件夹
只要.java结尾的文件
c: \abc
c: \abc\abc. txt
c: \abc\abc.java
c: \abe\a
c: \abc\a\a.ipg
c: \abc\a\a java
c: \abc\b
c: \abc\b\b java
c: \abc\b\b. txt
我们可以使用过滤器来实现
在FiLe类中有两个和 ListFiles重载的方法,方法的参数传递的就是过滤器
File[] listFiles(Filefitter filter)
java.io. FileFilter接口:用于抽象路径名(Fie对象)的过滤器。
作用:用来过滤文件(FiLe对象)
抽象方法:用来过滤文件的方法
boolean accept( File pathname)测试指定抽象路径名是否应该包含在某个路径名列表中
参数:
File pathname:使用 ListFiles方法遍历目录,得到的每一个文件对象
File[] listfiles(FilenameFilter filter)
java.io. FilenameFilter接口:实现此接口的类实例可用于过滤器文件名
作用:用于过滤文件名称
抽象方法:用来过滤文件的方法
boolean accept( File dir, String name)测试指定文件是否应该包含在某一文件列表中
参数:
File dir:构造方法中传递的被遍历的目录
String name:使用 ListFiles方法遍历目录获取的每一个文件/文件夹的名称
注意:两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法 accept,在方法中自己定义过滤的规则
IO流
java.io.OutputStream:字节输出
此抽象类是表示输出字节流的所有类的超类
定义了一些子类共性的成员方法:
public void close():关闭此输岀流并释放与此流相关联的任何系统资源
public void flush():刷新此输出流并强制任何缓冲的输出字节被写出
public void write(byte[] b):将b. Length字节从指定的字节数组写入此输出流
public void write( byte[] b, int off, int Len):从指定的字节数组写入Len字节,从偏移量off开始输出到此输出流
public abstract void write(int b):将指定的字节输出流