Java 進階教學 : Basic File IO (基礎檔案存取)

Java Road


好的頻道需要你的支持
,謝謝你使用Youtube影片的超級感謝功能給我們鼓勵。







好的頻道需要你的支持,謝謝你使用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()