- Java核心技術(shù)·卷Ⅱ:高級(jí)特性(原書第10版)
- (美)凱S.霍斯特曼
- 587字
- 2020-10-30 18:10:39
2.2.3 以文本格式存儲(chǔ)對(duì)象
在本節(jié),我們將帶你領(lǐng)略一個(gè)示例程序,它將一個(gè)Employee記錄數(shù)組存儲(chǔ)成了一個(gè)文本文件,其中每條記錄都保存成單獨(dú)的一行,而實(shí)例字段彼此之間使用分隔符分離開,這里我們使用豎線(|)作為分隔符(冒號(hào)(:)是另一種流行的選擇,有趣的是,每個(gè)人都會(huì)使用不同的分隔符)。因此,我們這里是在假設(shè)不會(huì)發(fā)生在要存儲(chǔ)的字符串中存在|的情況。
下面是一個(gè)記錄集的樣本:

寫出記錄相當(dāng)簡(jiǎn)單,因?yàn)槲覀兪且獙懗龅揭粋€(gè)文本文件中,所以我們使用PrintWriter類。我們直接寫出所有的字段,每個(gè)字段后面跟著一個(gè)|,而最后一個(gè)字段的后面跟著一個(gè)\n。這項(xiàng)工作是在下面這個(gè)我們添加到Employee類中的writeEmployee方法里完成的:

為了讀入記錄,我們每次讀入一行,然后分離所有的字段。我們使用一個(gè)掃描器來讀入每一行,然后用String.split方法將這一行斷開成一組標(biāo)記。

split方法的參數(shù)是一個(gè)描述分隔符的正則表達(dá)式,我們?cè)诒菊碌哪┪矊⒃敿?xì)討論正則表達(dá)式。碰巧的是,豎線在正則表達(dá)式中具有特殊的含義,因此需要用\字符來表示轉(zhuǎn)義,而這個(gè)\又需要用另一個(gè)\來轉(zhuǎn)義,這樣就產(chǎn)生了“\\|”表達(dá)式。
完整的程序如程序清單2-1所示。靜態(tài)方法

首先寫出該數(shù)組的長(zhǎng)度,然后寫出每條記錄。靜態(tài)方法

首先讀入該數(shù)組的長(zhǎng)度,然后讀入每條記錄。這顯得稍微有點(diǎn)棘手:

對(duì)nextInt的調(diào)用讀入的是數(shù)組長(zhǎng)度,但不包括行尾的換行字符,我們必須處理掉這個(gè)換行符,這樣,在調(diào)用nextLine方法后,readData方法就可以獲得下一行輸入了。
程序清單2-1 textFile/TextFileTest.java



- Learn TypeScript 3 by Building Web Applications
- Visual FoxPro程序設(shè)計(jì)教程(第3版)
- 自己動(dòng)手實(shí)現(xiàn)Lua:虛擬機(jī)、編譯器和標(biāo)準(zhǔn)庫(kù)
- Servlet/JSP深入詳解
- Python 3破冰人工智能:從入門到實(shí)戰(zhàn)
- Learning Unity 2D Game Development by Example
- Learning OpenStack Networking(Neutron)(Second Edition)
- Learning PHP 7
- 后臺(tái)開發(fā):核心技術(shù)與應(yīng)用實(shí)踐
- Instant Zurb Foundation 4
- Java 從入門到項(xiàng)目實(shí)踐(超值版)
- OpenCV with Python Blueprints
- Node.js從入門到精通
- MySQL 8從零開始學(xué)(視頻教學(xué)版)
- 官方 Scratch 3.0 編程趣味卡:讓孩子們愛上編程(全彩)