Java 進階教學 : Basic File IO (基礎檔案存取)
Java Road
好的頻道需要你的支持,謝謝你使用Youtube影片的超級感謝功能給我們鼓勵。
這一個單元,是這個 “Java Road
- Java 進階教學” 部落格的最後一個單元。接下來,影片錄製的重點會轉入(Java Professional):物件導向的深入觀念、進階語法的使用與高階API的應用。搭配更貼近實務的範例,讓同學可以清楚地掌握 Java 語法學習的重點。理解為什麼要學這麼多東西?
Java語法發展的重點,越來越偏向後端。因為是後端,穩定跟速度就很重要。所以
Oracle提供了相當多高階的API。運用這一群API才能夠開發出夠穩定、夠快速的應用程式。
而且,為了提升程式開發的效率,過於冗長的程式碼寫法,要漸漸地淘汰掉。所以 Java 語法中摻入了簡易的寫法 Lambda expression。在新的API中。也大量的使用了Lambda expression。
而要能夠妥善應用 API。除了要學會Lambda expression。也必須理解深入的物件導向概念。包含抽象類別、界面、巢狀類別與 Enum 等。而這一大群的內容都會在下一個部落格中,呈現給各位。
到目前為止。我們學會的所有語法以及所寫的範例。不管運算出什麼結果,在程式結束以後,那些結果都會消失。因為,我們沒有把那些結果存起來,只是單純的輸出。
這一份講義,要帶著大家學會基本的檔案存取。最後,寫一個簡單的範例:可以在程式啟動的時候,讀入檔案中的資料。在程式中,運算資料、修改資料並在程式結束時把資料存到檔案中。
這份講義,我寫得不是很詳細。因為,我這個教學頻道,最主要的目的:是讓各位學會基本語法與基礎觀念以後,可以自行參閱 API 文件並寫出你需要的邏輯。因為只有你自己能夠看得懂 API 文件,你才能夠成為一個成功的程式設計師。至於要看懂API文件的所有技巧在前面的影片中都已經教得差不多了。所以,利用最後的這一份文件,帶著各位運用前面學會的基本語法與基礎觀念並且參閱 API 文件,來完成這個範例。
這是一個簡單的學生成績管理系統。學生的成績會存在一個檔案。每一列儲存一個學生的學號以及五科的成績。檔案中先預設有 5 列資料。程式啟動時會開啟檔案並讀入這 5 列資料。執行中用程式碼新增一筆新的資料。然後在程式結束時。把所有資料寫回檔案。
Java 語法中的輸入與輸出資料流。分成以 byte 為單位的資料流與以 character 為單位的資料流。以 byte 為單位的資料流,每次運算一個 byte 的資料;以 character 為單位的資料流,每次運算一個 character 的資料。也就是說,如果要處理非文字檔,就使用 byte 資料流。如果要處理文字檔,就使用 character 資料流。
一、byte stream
1.
InputStream ->
FileInputStram
* 檔案預設位置是專案資料夾 (NetBeans)
* 若指定檔案不存在,會產生FileNotFoundException。
i.
int read()
ii.
int read(byte[] b);
iii.
byte[] readAllBytes()
iv.
void close()
2.
OutputStream -> FileOutputStream
* 檔案預設位置是專案資料夾 (NetBeans)
* 若指定檔案不存在,會建立新檔案。
* 可以指定取代或串接。
i.
void write(int b)
ii.
void write(byte[] b)
iii.
void flush()
iv.
void close()
二、character
stream
1.
Reader -> FileReader
i.
int read()
ii.
int read(char[] cbuf)
iii.
void close()
2.
Writer -> FileWriter
i.
void write(int c)
ii.
void write(String str)
iii.
void flush()
iv.
void close()
三、Buffered
1.
BufferedReader
i.
String readLine()
2.
BufferedWriter
i.
void newLine()