博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.2.3 以文本格式存储对象...
阅读量:6258 次
发布时间:2019-06-22

本文共 651 字,大约阅读时间需要 2 分钟。

2.2.3 以文本格式存储对象

在本节,我们将带你领略一个示例程序,它将一个Employee记录数组存储成了一个文本文件,其中每条记录都保存成单独的一行,而实例字段彼此之间使用分隔符分离开,这里我们使用竖线(|)作为分隔符(冒号(:)是另一种流行的选择,有趣的是,每个人都会使用不同的分隔符)。因此,我们这里是在假设不会发生在要存储的字符串中存在 | 的情况。

下面是一个记录集的样本:
image

写出记录相当简单,因为我们是要写出到一个文本文件中,所以我们使用PrintWriter类。我们直接写出所有的字段,每个字段后面跟着一个 | ,而最后一个字段的后面跟着一个n。这项工作是在下面这个我们添加到Employee类中的writeEmployee方法里完成的:

image

为了读入记录,我们每次读入一行,然后分离所有的字段。我们使用一个扫描器来读入每一行,然后用String.split方法将这一行断开成一组标记。

image

split方法的参数是一个描述分隔符的正则表达式,我们在本章的末尾将详细讨论正则表达式。碰巧的是,竖线在正则表达式中具有特殊的含义,因此需要用 字符来表示转义,而这个 又需要用另一个来转义,这样就产生了“\|”表达式。

完整的程序如程序清单2-1所示。静态方法

image

对nextInt的调用读入的是数组长度,但不包括行尾的换行字符,我们必须处理掉这个换行符,这样,在调用nextLine方法后,readData方法就可以获得下一行输入了。

程序清单2-1 textFile/TextFileTest.java
image
image
image
image

转载地址:http://ajasa.baihongyu.com/

你可能感兴趣的文章
自己定义View学习之12/7(进度条之混合模式)
查看>>
Android零基础入门第5节:善用ADT Bundle,轻松邂逅女神
查看>>
momentum公式
查看>>
Git合并最近的commit
查看>>
面向对象高级——Object类、包装类以及匿名内部类
查看>>
(转)Mybatis insert后返回主键给实体对象(Mysql数据库)
查看>>
SFTP环境搭建及客户代码调用公共方法封装
查看>>
功能的权衡——推荐功能做不做?
查看>>
用oradebug short_stack及strace -p分析oracle进程是否dead或出现故障
查看>>
Tensorflow 之 TensorBoard可视化Graph和Embeddings
查看>>
jquery easyui里datagrid用法记录
查看>>
【转】C++标准转换运算符const_cast
查看>>
ssh密码
查看>>
常用的HTML富文本编译器UEditor、CKEditor、TinyMCE、HTMLArea、eWebEditor、KindEditor简介...
查看>>
【Saltstack】Saltstack简单说明
查看>>
[转]香农信息论与毒药称球问题
查看>>
HTTP Error 500.19
查看>>
我在博客园的这一年
查看>>
红黑树
查看>>
Jackson使用ObjectManage#readValue传入泛型T的问题
查看>>