[233]北大Java Week9 流、文件與基於文本的應用

2017-08-07(一) 蓋樓[233]

流、文件以及基本文本的應用

9.1 輸入輸出流

9.2 文件及目錄

9.3 正式表達

9.1.1 流與分類

  • 流:把不同類型的輸入、輸出都抽象為流
  • java.io包
  • 有很多類型的流:文件流、內存流、網路流(如下圖)
[233]北大Java Week9 流、文件與基於文本的應用_第1张图片
用自來水管來譬喻
  • 依照(輸入, 輸出)、(字節流, 字符流)有四種類型:InputStream,OutputStream,Reader,Writer
    • InputStream: public int read(byte b[]); 返回讀入字節數
    • OutputSream: write()方法 將字節寫入流中,也有另外兩種方法flush(),close()
  • 流又分成節點流、處理流:
    • Node Stream:文件、內存 FileInputStream,ByteArrayInputStream
    • Process Stream:BufferedReader
    • 通常有File就是屬於node Stream,如果是有關Buffer or Data conversion 屬於Process Stream

9.1.2標準輸入與標準輸出

  • System.in(InputStream 類型)
  • System.out(PrintStream 類型)

常見內容的讀寫

二進制
文本
對象

示例:Dump.java

目的:把一個流複製到另一個流

字符的讀寫

  • 常見的編碼:UTF-8,ASCII,GB2312, 系統默認編碼
  • CopyFileAddLineNumber.java
    • 目的是將java文件�的//後的內容刪除,並且輸出text文件
    • 如圖:
[233]北大Java Week9 流、文件與基於文本的應用_第2张图片
CopyFileAddLineNumber.java
使用java.nio.Files的readAllLines()方法
  • 例子:ReadAllLines.java

  • 這裡有趣的是要調整path,否則code會出錯

String filePath 要隨著ReadAllLines.java 做變換

[233]北大Java Week9 流、文件與基於文本的應用_第3张图片
Path的bug

對象的讀與寫

  • ObjectInputStream,ObjectOutputStream,基本數據的讀與寫

  • Serialize 與 deserialize的動作,前者是寫進去;後者是讀出來

  • 要求object實現Serializable 接口

  • 例子:SerializeDemo.java

  • 輸出結果:

Li(18)

Wang(19)

Yen(23)

9.1.3的背單詞 與 9.1.4的網絡流

9.2 文件目錄

上述章節在另外篇章紀錄

你可能感兴趣的:([233]北大Java Week9 流、文件與基於文本的應用)