標籤:ast ima 編碼 讀寫檔案 src 對象 檔案 讀取資料 ble
1. 本周學習總結1.1 以你喜歡的方式(思維導圖或其他)歸納總結多流與檔案相關內容。
2. 面向系統綜合設計-圖書館管理系統或購物車使用流與檔案改造你的圖書館管理系統或購物車。2.1 簡述如何使用流與檔案改造你的系統。檔案中資料的格式如何?2.2 簡述系統中檔案讀寫部分使用了流與檔案相關的什麼介面與類?為什麼要###用這些介面與類?2.3 讀寫檔案相關代碼。關鍵行需要加註釋。3. 代碼量統計3.1 統計本周完成的代碼量需要將每周的代碼統計情況融合到一張表中。
選做:4. 流與檔案學習指導(底下的作業內容全部都是選做)1. 字元流與文字檔:使用
PrintWriter(寫),BufferedReader(讀)將
Student對象(屬性:int id, String name,int age,double grade)寫入檔案###student.data、從檔案讀出顯示。1.1 產生的三個學生對象,使用
PrintWriter的
println方法寫入student.txt,每行###一個學生,學生的每個屬性之間用|作為分隔。使用Scanner或者###BufferedReader將student.txt的資料讀出。(關鍵代碼,出現學號)
1.2 組建檔案大小多少(使用右鍵檔案屬性查看)?分析該檔案大小
答:產生大小的檔案為48位元組。
1.3 如果調用
PrintWriter的
println方法,但在後面不
close。檔案大小是多少?為什嗎?
答:檔案大小變成0位元組,因為使用close()方法時關閉了這個流,在這個過程中調用了flush()方法,同時將重新整理writer和outputStream鏈中的所有緩衝區,導致資料的丟失。
2. 緩衝流2.1 使用
PrintWriter往檔案裡寫入1千萬行(隨便什麼內容都行),然後對比使用###BufferedReader與使用Scanner從該檔案中讀取資料的速度(唯讀取,不輸###出),使用哪種方法快?截取測試原始碼,出現學號。請詳細分析原因?提示:可以使用junit4對比已耗用時間
答:使用BufferedReader更快,因為它的緩衝區更大,使用時可以減少對檔案的操作次數。
2.2 將
PrintWriter換成
BufferedWriter,觀察寫入檔案的速度是否有提升。記錄兩者的已耗用時間。試分析原因。
答:使用BufferedWriter寫檔案更快,因為使用了緩衝技術。
4. 位元組流、二進位檔案:
DataInputStream,
DataOutputStream、
ObjectInputStream4.1 參考
DataStream目錄相關代碼,嘗試將三個學生對象的資料寫入檔案,然後從檔案讀出並顯示。(關鍵代碼,出現學號)
運行結果如下:
4.2 這裡產生的檔案和題目1產生的檔案有何不一樣?產生的檔案有多大?分析###該檔案大小?將該檔案大小和題目1產生的檔案對比是大了還是小了,為什嗎?
答:比題目1產生的檔案大,因為使用UTF-8編碼隱藏檔,漢字所佔位元組數比較大。
java week 12 ——流與檔案