32 文件IO流(一)
1.解决了什么样子的问题
如果你想在网页上显示节日快乐信息,你每定义一次就打印一次会很麻烦,所以文件IO流的产生使得改信息只需要改里面的文件即可
2.File文件
2.1核心
实例化的对象可以用来指代文件与文件夹
2.2 路径(文件所在地址)
A.相对路径()
相对路径指的相对于给定的目录的路径
如:day01/abc.txt
B.绝对路径(带根盘符的)
如:C:Users我的天空Desktop
具体如何书写等有时间再去自己研究,现阶段够用了
3.重写Object类的常用方法(clone未重写)
3.1 File类中的toString方法
public String toString() {
return getPath();
}
//返回的是提供构造方法初始化的地址
3.2 File中的equals方法(public boolean equals(Object obj))
调用equals方法判断两个对象是否相等,都先要判断是否为调用者的对象的实例化子类,若是则调用compareTo方法(必须实现Comparable接口)
//若是子类,且地址一样,必然返回true,否则(不为零的数字==0)必然返回false,
//equals源码如下:
public boolean equals(Object obj) {
if ((obj != null) && (obj instanceof File)) {
return compareTo((File)obj) == 0;
}
return false;
}
//Compare two abstract pathnames lexicographically
按字典顺序比较两个抽象路径名(compareTo方法调用compare方法的解释)
//字典顺序是从每个字符串的首字母进行英文字母表顺序的比较,
//如果第一个字符串的首字母在英文字母表中顺序靠前,则返回次序的差值(负数)
//如果第一个字符串的首字母在英文字母表中顺序靠后,则返回次序的差值(正数),
//若一样则继续往下比,如果全部一样则是返回0
//如: "abc" "add"
//方法调用者为"abc",实参值为"add",则返回值为(b的字母表顺序-d的字母表顺序=-2)
//方法调用者为"add",实参值为"add",则返回值为(0,所有字母都相等)
//方法调用者为"add",实参值为"abc",则返回值为(d的字母表顺序-b的字母表顺序=2)
String str="abc";
String str01="add";
System.out.println(str.compareTo(str01));
System.out.println(str01.compareTo(str01));
System.out.println(str01.compareTo(str));
4.常用操作
判断File对象是否存在
System.out.println(file.exists());
4.2 判断File对象是否是文件(标准文件)
System.out.println(file.isFile());
//文件与文件夹不是一个东西,文件夹指的的目录
4.3 判断File对象是否是文件夹 (即目录)
System.out.println(file.isDirectory());
4.4 判断File对象是否是绝对路径
System.out.println(file.isAbsolute());
4.5 创建文件
System.out.println(file.createNewFile());
//createNewFile只能创建文件
4.6 创建目录--->创建父文件存在的文件夹
System.out.println(file.mkdir());
4.7 创建目录----->创建文件夹,若路径文件夹不存在,则自动创建父类文件夹
System.out.println(file.mkdirs());
4.8 获取文件名
System.out.println(file.getName());
4.9 获取父文件名
System.out.println(file.getParent());
4.10 文件长度
System.out.println(file.length());
4.11 剪切
file.renameTo(new File("abc.txt"));
//把文件移动到指定位置
4.12 获取该文件目录下面的所有文件与文件夹(返回值为String[])
//list方法只针对于文件夹,返回值为String类型的数组
若File对象是文件,则返回null,空指针是不能够调用方法的
String[] lists = file.list();
for (String list : lists) {
System.out.println(list);
}
//仅仅会出现所有文件以及文件夹的名字(无前面的地址信息)
4.13 获取该文件目录下面的所有文件与文件夹(返回值为File[])
//listFiles只对于文件夹,返回值为File[],(除开打印文件名外,还可以做一系列操作)
若File对象是文件,则返回null,(空指针是不能够调用方法的)
File[] files = file.listFiles();
for (File file1:files){
System.out.println(file1.getName());
}
//会出现所有文件的绝对路径(若想只有文件名,如上面所示调用getName()方法)
4.14 得到初始化时赋值的地址信息
System.out.println(file1.getPath());