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());