java持久化一个数据到内存,Java 小例子:数据持久化(保存数据到文件)

说数据持久化,初学者可能还不太懂;但要说把数据保存到文件,这谁都懂了。为什么说持久化就是把数据保存到文件?持久化指的就是当程序退出后,其中的数据能够保留下来,供程序再次运行的时候使用。这些数据保留在什么地方最好呢?当然是文件里。

保存到文件是数据持久化最常用的方式,除此之外,还可以把数据保存到数据库,或者发送到其它机器,这都是持久化。不过保存在文件是最简单的方式。具体来说就是:选取需要保存的数据,按照一定的格式组织起来,然后写入文件。下面是一个简单的例子:

import java.io.*;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

/**

* 持久化示例。如何将内存中的数据保存起来,并没有一定的格式,任何人

* 都可以根据自己的喜好来制定。持久化需要文件操作,所以请务必先弄懂

* 如何读写文件。

*/

public class Persistant {

// 文件名可随意指定,你可以用文本编辑器打开这个文件(注意,记事本无法处理换行)

static String filename = "persons.data";

public static void main(String[] args) throws Exception {

// 将这个程序运行两遍。

// 第一遍它会创建一些 Person 对象并保存到文件;

// 第二遍它会从文件中读取对象数据并显示出来。

if (!new File(filename).exists()) {

createAndSave();

} else {

readAndShow();

}

}

// 生成并保存 Person 对象

private static void createAndSave() throws IOException {

List persons = createPersons();

savePersons(persons);

}

// 读取并显示 Person 对象

private static void readAndShow() throws IOException {

List persons = readPersons();

showPersons(persons);

}

// 创建要保存的 Person 对象

private static List createPersons() {

List result = new ArrayList();

result.add(new Person("张三", new Date(), true));

result.add(new Person("李四", new Date(), false));

result.add(new Person("王五", new Date(), true));

return result;

}

// 保存 Person 对象到文件。保存格式为:

// 1、每个 Person 一行

// 2、每行依次存放 name、birthday、male 三个属性值,用 tab 隔开

// 3、birthday 属性保存的是毫秒数,male 属性保存的是字符串

private static void savePersons(List persons) throws IOException {

// 生成文件内容

String data = "";

for (Person person : persons) {

data += getPersonString(person) + "/n";

}

// 保存文件内容

FileWriter writer = new FileWriter(filename);

writer.write(data);

writer.close();

System.out.println("对象保存完毕。");

}

private static String getPersonString(Person person) {

return person.getName() + "/t" + person.getBirthday().getTime() + "/t" + person.isMale();

}

// 从文件中读取 Person 对象

private static List readPersons() throws IOException {

List result = new ArrayList();

BufferedReader reader = new BufferedReader(new FileReader(filename));

String line;

while ((line = reader.readLine()) != null) {

result.add(getPersonFromString(line));

}

return result;

}

// 通过一行文件内容生成一个 Person 对象

private static Person getPersonFromString(String line) {

String[] parts = line.split("/t"); // 获取被分隔的三个部分

return new Person(

parts[0], // 姓名

new Date(Long.parseLong(parts[1])), // 出生日期

Boolean.parseBoolean(parts[2]) // 是否为男性

);

}

// 显示 Person 对象

private static void showPersons(List persons) {

for (Person person : persons) {

System.out.println(person.getName() + ", " +

person.getBirthday() + ", " +

(person.isMale() ? "男" : "女"));

}

}

}

// 要持久化的类

class Person {

private String name; // 姓名

private Date birthday; // 生日

private boolean male; // true 表示男性,false 表示女性

Person(String name, Date birthday, boolean male) {

this.name = name;

this.birthday = birthday;

this.male = male;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

public boolean isMale() {

return male;

}

public void setMale(boolean male) {

this.male = male;

}

}

PS:如何在粘贴代码时保留空行

空行是代码中的重要组成部分,可惜在 CSDN Blog 中粘贴代码,它是会把空行去掉的。解决办法是在空行前面加一个空格。

你可能感兴趣的:(java持久化一个数据到内存)