在判斷文件對象是否是文件或者目錄時,必須要先判斷該文件對象封裝的內容是否存在,通過exists判斷; 在文本文件操作流構造的時候還可指定編碼方式;
File f;
f.exists();
f.isDirectory();
f.isFile();
f.deleteOnExit();// 在程序退出的時候將指定文件刪除;
f.createNewFile();// 在指定位置創建文件,如果文件已經存在,則返回false;
f.getParent();//此方法返回的是絕對路徑中的父目錄,如果獲取的是相對路徑,返回Null,如果相對路徑中有上一層目錄則返回該目錄;
File.separator //文件系統分割符,不同系統分割符不同;
FilenameFilter://用於過濾文件名;
FilenameFilter.accept(File dir,String name); //測試指定文件是否包含在某一文件列表中;
name:文件的名稱;
public boolean accept(File dir, String name) { return name.endsWith(".txt"); }
//緩沖區的出現是為了提高流的操作效率而出現的;在創建緩沖區之前,必須要有流對象;
//緩沖技術其實是在對象內部封閉了數組,存完了之後一次性寫入;
Constructor: 將流傳入buffer的構造函數;
Notice:只要用到緩沖區,就得對緩沖區進行刷新;
Buffered... buf;
buf.flush();
buf.close();//關閉緩沖區就是關閉緩沖區中的流對象;
BufferedReader bufr;
bufr.readLine();//返回一行,但不包含換行符;
// 無論讀取一行還是多個字符,其實最終都是在硬盤上一個一個的讀取,所以最終使用的方法還是read方法一次讀一個
/*
* ByteArrayInputStream:在構造的時候,需要接收數據源,而且數據源為字節數組;
* ByteArrayOutputStream:在構造的時候,不用定義數據目的,因為內部定義了一個可變長度的字節數組,它就是數據目的地;
* 兩個流對象都操作的是數組,並沒有使用系統資源,不需要進行關閉的操作;
*/
// 關閉流資源之前會刷新一次內部緩沖區中的數據;
// flush();刷新(將緩沖區中的數據存入文件中)後,流繼續使用;
// 序列化:靜態的成員不能序列化;
// 如果不想讓非靜態成員被序列化,加修飾符:transient int,,,
System.in:InputStream
System.out:OutputStream