SlideShare a Scribd company logo
Submit Search
Upload
輸入輸出
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
1 like
•
578 views
1
of
48
輸入輸出
•
1 like
•
578 views
Report
Share
Download Now
Download to read offline
Technology
瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器類別
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
執行緒與並行API by
執行緒與並行API
Justin Lin
878 views
•
133 slides
Java SE 8 技術手冊第 11 章 - 執行緒與並行API by
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
3.7K views
•
133 slides
並行與平行 by
並行與平行
Justin Lin
2.7K views
•
45 slides
資料永續與交換 by
資料永續與交換
Justin Lin
1.8K views
•
71 slides
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2 by
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
5.6K views
•
66 slides
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API by
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
3.1K views
•
129 slides
More Related Content
What's hot
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 by
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
2.2K views
•
80 slides
Java SE 8 技術手冊第 5 章 - 物件封裝 by
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
3.4K views
•
74 slides
Java Tutorial:Learn Java in 06:00:00 by
Java Tutorial:Learn Java in 06:00:00
Justin Lin
27.5K views
•
98 slides
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器 by
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
1.9K views
•
48 slides
Java SE 8 技術手冊第 2 章 - 從JDK到IDE by
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
5.3K views
•
66 slides
Java SE 8 技術手冊第 10 章 - 輸入輸出 by
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
2.6K views
•
48 slides
What's hot
(20)
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 by Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
•
2.2K views
Java SE 8 技術手冊第 5 章 - 物件封裝 by Justin Lin
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
•
3.4K views
Java Tutorial:Learn Java in 06:00:00 by Justin Lin
Java Tutorial:Learn Java in 06:00:00
Justin Lin
•
27.5K views
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器 by Justin Lin
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
•
1.9K views
Java SE 8 技術手冊第 2 章 - 從JDK到IDE by Justin Lin
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
•
5.3K views
Java SE 8 技術手冊第 10 章 - 輸入輸出 by Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
•
2.6K views
Java SE 7 技術手冊投影片第 04 章 - 認識物件 by Justin Lin
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
•
3.2K views
Java SE 8 技術手冊第 4 章 - 認識物件 by Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
•
4.2K views
從模組到類別 by Justin Lin
從模組到類別
Justin Lin
•
1.7K views
流程語法與函式 by Justin Lin
流程語法與函式
Justin Lin
•
2.6K views
Java SE 7 技術手冊投影片第 12 章 - 通用API by Justin Lin
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
•
2.2K views
9. meta-programming by Justin Lin
9. meta-programming
Justin Lin
•
363 views
如何用JDK8實作一個小型的關聯式資料庫系統 by なおき きしだ
如何用JDK8實作一個小型的關聯式資料庫系統
なおき きしだ
•
18.7K views
Java SE 8 技術手冊第 12 章 - Lambda by Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
•
4.4K views
7. 錯誤處理 by Justin Lin
7. 錯誤處理
Justin Lin
•
307 views
Nashorn on JDK 8 (ADC2013) by Kris Mok
Nashorn on JDK 8 (ADC2013)
Kris Mok
•
2.6K views
CH11:執行緒與並行API by Justin Lin
CH11:執行緒與並行API
Justin Lin
•
320 views
Java 的開放原碼全文搜尋技術 - Lucene by 建興 王
Java 的開放原碼全文搜尋技術 - Lucene
建興 王
•
6.5K views
例外處理 by Justin Lin
例外處理
Justin Lin
•
299 views
全文搜尋引擎的進階實作與應用 by 建興 王
全文搜尋引擎的進階實作與應用
建興 王
•
11K views
Similar to 輸入輸出
[圣思园][Java SE]Io 3 by
[圣思园][Java SE]Io 3
ArBing Xie
284 views
•
58 slides
CH10:輸入輸出 by
CH10:輸入輸出
Justin Lin
253 views
•
33 slides
Java Jdk6学习笔记[Ppt] by
Java Jdk6学习笔记[Ppt]
yiditushe
1.4K views
•
619 slides
13, io by
13, io
ted-xu
373 views
•
22 slides
Io 2 by
Io 2
Medivh2011
299 views
•
111 slides
12, string by
12, string
ted-xu
397 views
•
15 slides
Similar to 輸入輸出
(20)
[圣思园][Java SE]Io 3 by ArBing Xie
[圣思园][Java SE]Io 3
ArBing Xie
•
284 views
CH10:輸入輸出 by Justin Lin
CH10:輸入輸出
Justin Lin
•
253 views
Java Jdk6学习笔记[Ppt] by yiditushe
Java Jdk6学习笔记[Ppt]
yiditushe
•
1.4K views
13, io by ted-xu
13, io
ted-xu
•
373 views
Io 2 by Medivh2011
Io 2
Medivh2011
•
299 views
12, string by ted-xu
12, string
ted-xu
•
397 views
Agile Taichung sharing Robot Framework 2018/05/19 by Leo Tseng
Agile Taichung sharing Robot Framework 2018/05/19
Leo Tseng
•
81 views
⼤語⾔模型 LLM 應⽤開發入⾨ by Wen-Tien Chang
⼤語⾔模型 LLM 應⽤開發入⾨
Wen-Tien Chang
•
5.4K views
Java SE 7 技術手冊投影片第 05 章 - 物件封裝 by Justin Lin
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
•
2.6K views
Btrace intro(撒迦) by ykdsg
Btrace intro(撒迦)
ykdsg
•
2.2K views
Elastic stack day-1 by YI-CHING WU
Elastic stack day-1
YI-CHING WU
•
1K views
Linux binary Exploitation - Basic knowledge by Angel Boy
Linux binary Exploitation - Basic knowledge
Angel Boy
•
3K views
千呼萬喚始出來的 Java SE 7 by Justin Lin
千呼萬喚始出來的 Java SE 7
Justin Lin
•
1.9K views
文學通的開發心路歷程 by 建銘 廖
文學通的開發心路歷程
建銘 廖
•
613 views
open() 與 io 模組 by Justin Lin
open() 與 io 模組
Justin Lin
•
1.8K views
与Python一路走来 by leejd
与Python一路走来
leejd
•
678 views
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器 by Chieh Kai Yang
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
•
1.7K views
Java 網路程式 by PingLun Liao
Java 網路程式
PingLun Liao
•
836 views
Spark tutorial by Lin JiaMing
Spark tutorial
Lin JiaMing
•
206 views
OpenSCAD Workshop by Justin Lin
OpenSCAD Workshop
Justin Lin
•
2.1K views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTL
Justin Lin
•
161 views
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
237 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
Recently uploaded
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
40 views
•
37 slides
AI Technology & Development of Civilization by
AI Technology & Development of Civilization
unclebrown017
41 views
•
74 slides
Hacking Facebook for fun and profit by Pranav Hivarekar by
Hacking Facebook for fun and profit by Pranav Hivarekar
Pranav Hivarekar
6 views
•
69 slides
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
150 views
•
54 slides
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
43 views
•
32 slides
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
43 views
•
25 slides
Recently uploaded
(6)
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
40 views
AI Technology & Development of Civilization by unclebrown017
AI Technology & Development of Civilization
unclebrown017
•
41 views
Hacking Facebook for fun and profit by Pranav Hivarekar by Pranav Hivarekar
Hacking Facebook for fun and profit by Pranav Hivarekar
Pranav Hivarekar
•
6 views
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by Shengyou Fan
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
•
150 views
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
43 views
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
43 views
輸入輸出
1.
1
2.
輸入輸出 學習目標 • 瞭解串流與輸入輸出的關係 • 認識InputStream、OutputStream繼承架構 •
認識Reader、Writer繼承架構 • 使用輸入輸出裝飾器類別 2
3.
串流設計觀念 3
4.
串流設計觀念 • 從應用程式角度來看,如果要將資料從來源 取出,可以使用輸入串流,如果要將資料寫 入目的地,可以使用輸出串流 • 輸入串流代表物件為 java.io.InputStream實例,輸出串流代 表物件為java.io.OutputStream實例 4
5.
串流設計觀念 5
6.
串流設計觀念 • 來源與目的地都不知道的情況下,如何撰寫 程式? 6
7.
串流設計觀念 • 在不使用InputStream與OutputStream 時,必須使用close()方法關閉串流 • InputStream與OutputStream實作了 java.io.Closeable介面,其父介面為 java.lang.AutoCloseable介面,因此 可使用JDK7嘗試自動關閉資源語法 7
8.
串流設計觀念 • 如果要將某個檔案讀入並另存為另一個檔案 .. 8
9.
串流設計觀念 • 如果要從HTTP伺服器讀取某個網頁,並另存 為檔案 … 9
10.
串流設計觀念 • 使用java.net.ServerSocket接受客戶 端連線的例子: 10
11.
串流設計觀念 • 將來學到Servlet,想將檔案輸出至瀏覽器, 也會有類似的操作: 11
12.
串流繼承架構 12
13.
串流繼承架構 13
14.
串流繼承架構 • 記得System.in與System.out嗎?分別是 InputStream與PrintStream的實例 … •
較少直接操作InputStream相關方法,而 是如先前章節使用java.util.Scanner包 裹System.in 14
15.
串流繼承架構 • 可以使用System的setIn()方法指定 InputStream實例,指定標準輸入來源 • 將標準輸入指定為FileInputStream,可 以讀取指定檔案並顯示在文字模式 15
16.
串流繼承架構 • 若要將10.1.1的Download範例改為輸出至標 準輸出,也可以這麼寫: 16
17.
串流繼承架構 • 標準輸出可以重新導向至檔案,只要執行程 式時使用>將輸出結果導向至指定的檔案 • 如果使用>>則是附加訊息 17
18.
串流繼承架構 • 可以使用System的setOut()方法指定 PrintStream實例,將結果輸出至指定的 目的地 • 將標準輸出指定至檔案: 18
19.
串流繼承架構 • System.err為PrintSteam實例,稱之為 標準錯誤輸出串流,用來立即顯示錯誤訊息 • System.out輸出的訊息可以使用>或>>重 新導向至檔案,但System.err輸出的訊息 一定會顯示在文字模式中,無法重新導向 •
可以使用System.setErr()指定 PrintStream,指定標準錯誤輸出串流 19
20.
串流繼承架構 • FileInputStream是InputStream的子類,可 以指定檔案名稱建構實例,一旦建構檔案就開啟, 接著就可用來讀取資料 • FileOutputStream是OutputStream的子類, 可以指定檔案名稱建構實例,一旦建構檔案就開啟, 接著就可以用來寫出資料 •
無論是FileInputStream或 FileOutputStream,不使用時都要使用close() 關閉檔案 20
21.
串流繼承架構 • FileInputStream主要實作了 InputStream的read()抽象方法,使之可 從檔案中讀取資料 • FileOutputStream主要實作了 OutputStream的write()抽象方法,使之 可寫出資料至檔案 21
22.
串流繼承架構 • FileInputStream、 FileOutputStream在讀取、寫入檔案時, 是以位元組為單位 • 通常會使用一些高階類別加以包裹,進行一 些高階操作,像是Scanner與 PrintStream類別等 22
23.
串流繼承架構 • ByteArrayInputStream是 InputStream的子類,可以指定byte陣列 建構實例,一旦建構就可將byte陣列當作資 料來源進行讀取 • ByteArrayOutputStream是 OutputStream的子類,可以指定byte陣 列建構實例,一旦建構將byte陣列寫作目的 地寫出資料 23
24.
串流繼承架構 • ByteArrayInputStream主要實作了 InputStream的read()抽象方法,使之可 從byte陣列中讀取資料 • ByteArrayOutputStream主要實作了 OutputStream的write()抽象方法,使之 可寫出資料至byte陣列 24
25.
串流處理裝飾器 • InputStream、OutputStream提供串流 基本操作,如果想要為輸入輸出的資料作加 工處理,則可以使用包裹器類別 – 具備緩衝區作用的BufferedInputStream、 BufferedOutputStream –
具備資料轉換處理作用的DataInputStream、 DataOutputStream – 具備物件序列化能力的ObjectInputStream、 ObjectOutputStream 25
26.
串流處理裝飾器 26
27.
串流處理裝飾器 • 如果傳入IO.dump()的是 FileInputStream、 FileOutputStream實例,每次read()時 都會要求讀取硬碟,每次write()都會要求 寫入硬碟,這會花費許多時間在硬碟定位上 27
28.
串流處理裝飾器 • BufferedInputStream與 BufferedOutputStream主要於內部提供 緩衝區功能 • 建構BufferedInputStream、 BufferedOutputStream必須提供 InputStream、OutputStream進行包裹, 可以使用預設或自訂緩衝區大小 28
29.
串流處理裝飾器 29
30.
串流處理裝飾器 • DataInputStream、 DataOutputStream提供讀取、寫入Java 基本資料型的方法,像是讀寫int、double、 boolean等的方法 30
31.
31
32.
32
33.
串流處理裝飾器 • ObjectInputStream提供readObject()方法將 資料讀入為物件,而ObjectOutputStream提供 writeObject()方法將物件寫至目的地 • 可以被這兩個方法處理的物件,必須實作 java.io.Serializable介面,這個介面並沒有 定義任何方法,只是作為標示之用,表示這個物件 是可以序列化的(Serializable) 33
34.
34
35.
35
36.
串流處理裝飾器 • 如果在作物件序列化時,物件中某些資料成 員不希望被寫入,則可以標上transient關 鍵字 36
37.
Reader與Writer繼承架構 37
38.
Reader與Writer繼承架構 • 在不使用Reader與Writer時,必須使用 close()方法關閉串流,由於Reader與 Writer實作了Closeable介面,其父介面 為AutoCloseable介面,因此可使用JDK7 嘗試自動關閉資源語法 38
39.
Reader與Writer繼承架構 39
40.
Reader與Writer繼承架構 40
41.
Reader與Writer繼承架構 • 若要使用CharUtil.dump()讀入檔案、轉 為字串並顯示在文字模式中… 41
42.
Reader與Writer繼承架構 • FileReader、FileWriter可以對檔案作 讀取與寫入,讀取或寫入時預設會使用作業 系統預設編碼來作字元轉換 • 在啟動JVM時,可指定-Dfile.encoding 來指定FileReader、FileWriter所使用 的編碼 42
43.
Reader與Writer繼承架構 • FileReader、FileWriter沒有可以指定 編碼的方法 • 如果在程式執行過程中想要指定編碼,則必 須使用InpuStreamReader、 OutputStreamWriter 43
44.
字元處理裝飾器 • 想要將位元組資料轉換為對應的編碼字元, 可以使用InputStreamReader、 OutputStreamWriter對串流資料資料包 裹 • 在建立InputStreamReader與 OutputStreamWriter時,可以指定編碼, 如果沒有指定編碼,則以JVM啟動時所獲取 的預設編碼來作字元轉換 44
45.
字元處理裝飾器 45
46.
字元處理裝飾器 • 想以UTF-8處理字元資料,例如讀取UTF-8的 Main.java文字檔案,並另存為UTF-8的 Main.txt文字檔案 … 46
47.
字元處理裝飾器 • BufferedReader、BufferedWriter可 對Reader、Writer提供緩衝區作用 • JDK
1.4之前,標準API並沒有Scanner類別, 若要在文字模式下取得使用者輸入的字串, 會如下撰寫: 47
48.
字元處理裝飾器 • PrintWriter與PrintStream使用上極為 類似,除了可以對OutptStream包裹之外, PrintWriter還可以對Writer進行包裹, 提供print()、println()、format()等 方法 48