1.File
file類是文件和目錄路徑名的抽象表示形式。
//1.創建文件夾,父文件夾不存在會自動創建
File filedir = new File("E:\\demo1\\demo2\\demo3");
System.out.println("mkdir:" + filedir.mkdirs());
//2.創建文件,目錄不存在
File file = new File(filedir, "a.txt");
System.out.println("file:" + file.createNewFile());
//3.創建文件,目錄已存在
File file2 = new File("E:\\demo1\\demo2\\demo3\\b.txt");
System.out.println("file:" + file2.createNewFile());
2. 過濾器功能
File[] listFiles(FilenameFilter filter)
public static void main(String[] args) throws IOException {
File file = new File("e:\\");
// 1.先獲取所有的,在遍歷的時候判斷,再輸出
// 2.先判斷,再獲取
File[] listFiles = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
boolean condition = new File(dir,name).isFile() && name.endsWith(".jpg");
return condition;
}
});
for (File file2 : listFiles) {
System.out.println(file2.getName());
break;
}
}
3. IO流的分類
4. FileOutputStream寫數據的的注意事項
a: 創建字節輸出流對象做了幾件事情?
- 調用系統功能去創建文件
- 創建fos對象
- 把fos對象指向這個文件
b: 爲什麼要close()?
- 讓流對象變成垃圾,這樣就可以被垃圾回收器回收了
- 通知系統去釋放跟該文件相關的資源
c: 如何實現數據的換行?
- 在數據添加後寫入換行符
- 換行符:windows:
\r\n
,linux:\n
,Mac:\r
d: 如何實現數據的追加寫入?
- 創建一個向具有指定 name 的文件中寫入數據的輸出文件流。如果第二個參數爲 true,則將字節寫入文件末尾處,而不是寫入文件開始處。
FileOutputStream fos = new FileOutputStream("test.txt", true);
5. 字節緩衝區流
BufferedOutputStream(OutputStream out)
通過定義數組的方式確實比以前一次讀取一個字節的方式快很多,所以,看來有一個緩衝區還是非常好的。
爲什麼傳遞一個OutputStream對象呢?因爲字節緩衝區流僅僅提供緩衝區,爲高效而設計的。但是呢,真正的讀寫操作還得靠基本的流對象實現。
這種類被稱爲:緩衝區類(高效類)
- 寫數據:BufferedOutputStream
- 讀數據:BufferedInputStream