File类、递归、字节流
一、File類
1.1 概述
java.io.File 類是文件和目錄路徑名的抽象表示,主要用于文件和目錄的創建、查找和刪除等操作。
1.2 構造方法
public File(String pathname) :通過將給定的路徑名字符串轉換為抽象路徑名來創建新的 File實例。
public File(String parent, String child) :從父路徑名字符串和子路徑名字符串創建新的 File實例。
public File(File parent, String child) :從父抽象路徑名和子路徑名字符串創建新的 File實例。
一個File對象代表硬盤中實際存在的一個文件或者目錄。
無論該路徑下是否存在文件或者目錄,都不影響File對象的創建。
1.3 常用方法
獲取功能的方法
public String getAbsolutePath() :返回此File的絕對路徑名字符串。
public String getPath() :將此File轉換為路徑名字符串。
public String getName() :返回由此File表示的文件或目錄的名稱。
public long length() :返回由此File表示的文件的長度。
判斷功能的方法
public boolean exists() :此File表示的文件或目錄是否實際存在。
public boolean isDirectory() :此File表示的是否為目錄。
public boolean isFile() :此File表示的是否為文件。
創建刪除功能的方法
public boolean createNewFile() :當且僅當具有該名稱的文件尚不存在時,創建一個新的空文件。
public boolean delete() :刪除由此File表示的文件或目錄。
public boolean mkdir() :創建由此File表示的目錄。
public boolean mkdirs() :創建由此File表示的目錄,包括任何必需但不存在的父目錄。
delete方法,如果此File表示目錄,則目錄必須為空才能刪除。
1.4 目錄的遍歷
public String[] list() :返回一個String數組,表示該File目錄中的所有子文件或目錄。public File[] listFiles() :返回一個File數組,表示該File目錄中的所有的子文件或目錄。
調用listFiles方法的File對象,表示的必須是實際存在的目錄,否則返回null,無法進行遍歷。
二、遞歸
2.1文件搜索
public class DiGuiDemo3 {
public static void main(String[] args) {
// 創建File對象
File dir = new File(“D:\aaa”);
// 調用打印目錄方法
printDir(dir);
}
}
三、IO概述
3.1 什么是IO
按照流動的方向,以內存為基準,分為輸入input 和輸出output ,即流向內存是輸入流,流出內存的輸出流。
Java中I/O操作主要是指使用java.io包下的內容,進行輸入、輸出操作。
輸入也叫做讀取數據,輸出也叫做作寫出數據。
3.2 IO的分類
根據數據的流向分為:輸入流和輸出流。
輸入流 :把數據從其他設備上讀取到內存中的流。
輸出流 :把數據從內存 中寫出到其他設備上的流。
格局數據的類型分為:字節流和字符流。
字節流 :以字節為單位,讀寫數據的流。
字符流 :以字符為單位,讀寫數據的流。
3.3 IO的流向
硬盤---->>內存 :輸入
內存---->>硬盤 :輸出
3.4 頂級父類們
字節流: 字節輸入流 inputStream 字節輸出流 outputStream
字符流: 字符輸入流 Reader 字符輸出流Writer
四、字節流
4.1字節輸出流【OutputStream】
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) :將指定的字節輸出流。
close方法,當完成流的操作時,必須調用此方法,釋放系統資源。
4.2 FileOutputStream類
OutputStream有很多子類,我們從最簡單的一個子類開始。
java.io.FileOutputStream類是文件輸出流,用于將數據寫出到文件。
構造方法
public FileOutputStream(File file):創建文件輸出流以寫入由指定的 File對象表示的文件。
public FileOutputStream(String name): 創建文件輸出流以指定的名稱寫入文件。
當你創建一個流對象時,必須傳入一個文件路徑。該路徑下,如果沒有這個文件,會創建該文件。如果有這個文件,會清空這個文件的數據。
public class FileOutputStreamConstructor throws IOException {
public static void main(String[] args) {
// 使用File對象創建流對象
File file = new File(“a.txt”);
FileOutputStream fos = new FileOutputStream(file);
寫出字節數據
寫出字節:write(int b) 方法,每次可以寫出一個字節數據,代碼使用演示:
public class FOSWrite {
public static void main(String[] args) throws IOException {
// 使用文件名稱創建流對象
FileOutputStream fos = new FileOutputStream(“fos.txt”);
// 寫出數據
fos.write(97); // 寫出第1個字節
fos.write(98); // 寫出第2個字節
fos.write(99); // 寫出第3個字節
// 關閉資源
fos.close();
}
}
輸出結果:
abc
雖然參數為int類型四個字節,但是只會保留一個字節的信息寫出。
流操作完畢后,必須釋放系統資源,調用close方法,千萬記得。
** 寫出字節數組 **
write(byte[] b),每次可以寫出數組中的數據,代碼使用演示:
public class FOSWrite {
public static void main(String[] args) throws IOException {
// 使用文件名稱創建流對象
FileOutputStream fos = new FileOutputStream(“fos.txt”);
// 字符串轉換為字節數組
byte[] b = “李俊漩”.getBytes();
// 寫出字節數組數據
fos.write(b);
// 關閉資源
fos.close();
}
}
** 寫出指定長度字節數組:**
write(byte[] b, int off, int len) ,每次寫出從off索引開始,len個字節,代碼使用演示:
public class FOSWrite {
public static void main(String[] args) throws IOException {
// 使用文件名稱創建流對象
FileOutputStream fos = new FileOutputStream(“fos.txt”);
// 字符串轉換為字節數組
byte[] b = “abcde”.getBytes();
// 寫出從索引2開始,2個字節。索引2是c,兩個字節,也就是cd。
fos.write(b,2,2);
// 關閉資源
fos.close();
}
}
數據追加續寫
經過以上的演示,每次程序運行,創建輸出流對象,都會清空目標文件中的數據。如何保留目標文件中數據,還能繼續添加新數據呢?
public FileOutputStream(File file, boolean append): 創建文件輸出流以寫入由指定的 File對象表示的文件。
public FileOutputStream(String name, boolean append): 創建文件輸出流以指定的名稱寫入文件。
這兩個構造方法,參數中都需要傳入一個boolean類型的值,true 表示追加數據,false 表示清空原有數據。這樣創建的輸出流對象,就可以指定是否追加續寫了,代碼使用演示:
public class FOSWrite {
public static void main(String[] args) throws IOException {
// 使用文件名稱創建流對象
FileOutputStream fos = new FileOutputStream(“fos.txt”,true);
// 字符串轉換為字節數組
byte[] b = “abcde”.getBytes();
// 寫出從索引2開始,2個字節。索引2是c,兩個字節,也就是cd。
fos.write(b);
// 關閉資源
fos.close();
}
}
文件操作前:cd
文件操作后:cdabcde
寫出換行
Windows系統里,換行符號是\r\n 。
public class FOSWrite {
public static void main(String[] args) throws IOException {
// 使用文件名稱創建流對象
FileOutputStream fos = new FileOutputStream(“fos.txt”);
// 定義字節數組
byte[] words = {97,98,99,100,101};
// 遍歷數組
for (int i = 0; i < words.length; i++) {
// 寫出一個字節
fos.write(words[i]);
// 寫出一個換行, 換行符號轉成數組寫出
fos.write("\r\n".getBytes());
}
// 關閉資源
fos.close();
}
}
輸出結果:
a
b
c
d
e
回車符\r和換行符\n :
回車符:回到一行的開頭(return)。
換行符:下一行(newline)。
系統中的換行:Windows系統里,每行結尾是 回車+換行 ,即\r\n;
Unix系統里,每行結尾只有 換行 ,即\n;
Mac系統里,每行結尾是 回車 ,即\r。從 Mac OS X開始與Linux統一。
總結
以上是生活随笔為你收集整理的File类、递归、字节流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux删除的文件怎么恢复(linux
- 下一篇: 怎么查询护肤品备案编号(怎么查询护肤品备