Java高階應用(2)
1.File類:檔案操作 File類:在java中File表示一個檔案或者資料夾 1.1建立例項 File類沒有無參的構造方法 Public File(String pathname) 通過將指定的路徑名字字串轉換為抽象路徑名來建立新的File例項。 1.2常用方法 1.2.1 createNewFile() throws IOException :boolean 當不存在具有此抽象路徑名的檔案的時候,或建立一個新的空檔案 1.2.2 mkdir() / mkdirs():boolean 建立此抽象路徑名的資料夾 帶s:對抽象路徑中的資料夾沒有要求,多級資料夾沒有的話會被一起建立 不帶s:要求最後一級之前的所有資料夾都必須存在 1.2.3 delete() :boolean 和deleteOnExit():boolean 刪除檔案或者資料夾 1.2.4 exists() :boolean 判定抽象路徑是否存在 1.2.5 isFile() :boolean 判定此抽象路徑是否是檔案 1.2.6 isDirectory() :boolean 判定此抽象路徑是否是目錄(資料夾)
2.流(I/O) 流:提供資料傳輸的通道。 2.1流的分類 2.1.1根據傳輸的資料型別分:位元組流和字元流 位元組:byte 位元組流可以操作任意型別的檔案。 字元: char 一個字元2個位元組,字元流可以操作資料夾。 2.1.2根據傳輸方向劃分:輸入流和輸出流 程式執行時,資料儲存在記憶體中。流的方向的參照物是記憶體。 輸入流:從硬碟檔案到記憶體(程式) 記憶體《《《《《《《《《《《《《《《《檔案(讀) 輸出流:從硬碟檔案到記憶體(程式) 記憶體》》》》》》》》》》》》》》》》檔案(寫) 2.1.3根據流本身的功能劃分:節點流和過濾流 節點流:直接從節點中取資料或儲存資料的劉物件 過濾流:從節點流的基礎上創建出來的擴充套件功能的流物件。 2.1.4流的父類 位元組流:InputStream(輸入) OutputStream(輸出) 字元流:Reader(輸入) Writer(輸出) 2.2使用位元組流操作檔案 FileInputStream 檔案輸入流讀取檔案 FileOutoutStream 檔案輸出流寫檔案 2.2.1 讀取檔案:二進位制方式處理 FileInputStream類:從檔案系統中的某個檔案中獲取輸入位元組 Public FileInputStream(String name/File fileName) throws FileNotFoundException 通過開啟一個實際的檔案的連結來建立了一個FileInputStream, 通過檔案的名稱路徑名(String name)或者 File物件的file制定。 Public int read() throws IOExecption 從輸入流中讀取一個位元組 Public void close() throws IOException 關閉此檔案輸入流並釋放與此流相關的所有的系統資源 2.2.2寫入檔案:二進位制方式處理 FileOutputStream 類:用於將記憶體資料寫入file或檔案目錄的輸出流 Public FileOutputStream (String name) throws FileNotFoundException 建立一個具有制定了名稱檔案的檔案輸出流 Public void write(int num) throws IOExecption 將制定的位元組寫入輸出流 Public void close() throws IOException 關閉此檔案輸入流並釋放與此流相關的所有的系統資源 2.2.3使用快取的方式優化 Public int read(byte[] b) throw IOException 從輸入流中將b.length個位元組的資料讀入到byte陣列中。 返回:讀入緩衝區的位元組總數。 Public void write(byte[] b) throw IOExection 將制定的byte的陣列寫入輸出流 Public int read(byte[] b,int off ,int len) throw IOException 從輸入流中將len個位元組((len包含了偏移))的從偏移量off開始的資料讀入到byte陣列中。 返回:讀入緩衝區的位元組總數。 Public void write(byte[] b,int off ,int len) throw IOExection 將制定的byte的陣列從便宜了off開始的len個位元組(len包含了偏移)寫入輸出流 2.2.4向檔案中追加內容的方式 FileOutputStream(String path, boolean append) FileOutputStream(File file, boolean append) 2.2.5新的異常處理方式JDK7新特性 將需要關閉的資源在try後邊的括號中定義,這些資源會自動關閉,無需在finally塊中手動呼叫close()方法,也無需處理關閉資源時的異常。只要是實現java.io.Closeable介面的類,都可以放到try後邊的括號中例項化,最後這些資源都會被自動關閉。 2.3過濾流 2.3.1DataxxStream DataInputStream readXxx(); DataOutputStream writeXxx(); 2.3.2過濾流的開發步驟 建立節點流 基於節點流建立過濾流 讀/寫資料 關閉外層流 2.3.3BufferedXXXStream緩衝過濾流 2.4序列化ObjectOutputStream 在Java中:化:過程 序列化:將物件儲存到檔案的過程 反序列化:從檔案回到物件的過程 2.4.1序列化時使用的類:ObjectOutputStream Public ObjectOutputStream(OutputStream out )throw IOExecption; 建立寫入制定OutputStream 的ObjectOutputStream流 Public final writeObject(Object obj) throw IOExecption; 將制定的物件寫入ObjectOutputStream 2.4.2序列化中的異常 NotSerializableException 引起該異常的原因:被序列化的物件的類沒有實現Serializable介面
3字元流操作文字檔案 3.1字元輸入流 3.1.1FileReader類:用來讀取字元檔案的便捷類 Public FileReader(String fileName) throws FileNotFoundExecption 用指定的檔名稱建立新的FileReader Public int read() throws IOException 讀取單個字元 3.1.2 BufferedReader類:從字元輸入流中讀取文字,緩衝各個字元實現字元、陣列、行的高效讀取。 Public bufferedReader(Reader in) 建立一個使用預設大小輸入緩衝區的緩衝字元輸入流。 Public String readLine() throws IOException 讀取一個文字行 3.2 字元輸出流 3.2.1FileWriter類:用來寫入字元檔案的便捷類 Public FileWriter(String fileName) throws IOExecption 用指定的檔名稱建立新的FileWriter物件 Public void write() throws IOException 寫入單個字元 3.2.2 BufferedWriter類:將文字寫入字元輸出流 Public bufferedWriter(Writer out) 建立一個使用預設大小輸出緩衝區的緩衝字元輸出流。 Public void write(String str) throws IOException 寫入字串 Public void flush() throws IOException 重新整理該流的緩衝區(強制將緩衝區中的內容寫入檔案) Public void newLine() throws IOException
4 將位元組流轉換為字元流 4.1 OutputStreamWriter:字元流通向在位元組流的橋樑 Public OutputStreamWriter(OutputSteam out) 建立使用預設字元編碼的OutputStreamWriter 4.2 InputStreamReader:位元組流通向在字元流的橋樑 Public InputStreamReader(InputSteam in) 建立使用預設字元編碼的InputStreamReader
5.資原始檔(properties) 資原始檔就是一個文字檔案,字尾是properties; 檔案編寫必須按照Map(key=value)方式 資原始檔不支援中文,需要轉碼(編譯器可以自動轉換) 5.1Properties類 包:java.util.properties Properties類要處理Map(key-value)格式的檔案,所以他是Map介面的實現類。 5.2 載入資原始檔內容到properties類中