官术网_书友最值得收藏!

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

主站蜘蛛池模板: 德安县| 延寿县| 陇西县| 平定县| 宁乡县| 齐河县| 老河口市| 鲁甸县| 屯门区| 陇川县| 金山区| 台北市| 无棣县| 乐都县| 峨边| 石棉县| 阳原县| 孝义市| 天门市| 抚顺县| 包头市| 长春市| 余姚市| 神农架林区| 嘉兴市| 三都| 福贡县| 三穗县| 祁连县| 彭泽县| 正宁县| 定边县| 乌拉特前旗| 内黄县| 集贤县| 从江县| 馆陶县| 双桥区| 星子县| 天津市| 池州市|