《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.2.3 以文本格式存储对象

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第2章 ,第2.2.3节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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

相关文章
|
21天前
|
存储 Java 编译器
【Java SE语法篇】7.面向对象——类和对象
【Java SE语法篇】7.面向对象——类和对象
【Java SE语法篇】7.面向对象——类和对象
|
7天前
|
存储 算法 Java
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
33 1
[Java]散列表的数据结构以及对象在JVM堆中的存储过程
|
4天前
|
缓存 Java 编译器
Java 构造函数与修饰符详解:初始化对象与控制权限
Java 构造函数 是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。 构造函数的作用: 为对象的属性设置初始值 执行必要的初始化操作
25 0
|
5天前
|
Java 流计算
在Flink实时任务中,POJO(Plain Old Java Object)对象的模式演进可能会引起不兼容的问题
在Flink实时任务中,POJO(Plain Old Java Object)对象的模式演进可能会引起不兼容的问题
20 4
|
6天前
|
Java Maven
java获取文件编码,jsoup获取html纯文本
java获取文件编码,jsoup获取html纯文本
6 0
|
21天前
|
Java
java获取各种时间,及格式
java获取各种时间,及格式
14 0
|
26天前
|
Java
【JAVA】我和我的第一个“对象”相遇
【JAVA】我和我的第一个“对象”相遇
41 0
【JAVA】我和我的第一个“对象”相遇
|
27天前
|
算法 C++ Python
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
19 0
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
|
1月前
|
Java API 索引
Java 编程问题:十、并发-线程池、可调用对象和同步器4
Java 编程问题:十、并发-线程池、可调用对象和同步器
19 0
|
Java 编译器
文本编写Java
文本编译器编写JAVA 控制台CMD模式运行程序: D:\Practice\Java\160717>javac HelloWorld.java D:\Practice\Java\160717>java HelloWorld Hello World!