在判斷檔案物件是否為檔案或目錄時,必須先判斷該檔案物件封裝的內容是否存在,透過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