`

Java 小例子:数据持久化(保存数据到文件)

    博客分类:
  • java
阅读更多
引用:http://blog.csdn.net/yidinghe
说数据持久化,初学者可能还不太懂;但要说把数据保存到文件,这谁都懂了。为什么说持久化就是把数据保存到文件?持久化指的就是当程序退出后,其中的数据能够保留下来,供程序再次运行的时候使用。这些数据保留在什么地方最好呢?当然是文件里。

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


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<Person> persons = createPersons();   
        savePersons(persons);   
    }   
    
    // 读取并显示 Person 对象   
    private static void readAndShow() throws IOException {   
        List<Person> persons = readPersons();   
        showPersons(persons);   
    }   
    
    // 创建要保存的 Person 对象   
    private static List<Person> createPersons() {   
        List<Person> result = new ArrayList<Person>();   
        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<Person> 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<Person> readPersons() throws IOException {   
        List<Person> result = new ArrayList<Person>();   
    
        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<Person> 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;   
    }   
}  
分享到:
评论

相关推荐

    Java 小例子:数据持久化(保存数据到文件)

    总的来说,这个Java小例子展示了数据持久化的基本原理和实现步骤,通过文件作为中介,实现了程序运行状态的保存和恢复。在实际开发中,根据项目需求,可以选择更适合的数据持久化方案,如数据库、NoSQL存储、云存储...

    探索Java序列化与反序列化的奥秘:数据持久化的桥梁

    1. **数据持久化**:允许将对象状态保存到文件或数据库。 2. **网络传输**:方便通过网络发送对象状态。 3. **版本控制**:支持序列化版本号,处理类版本变化。 **缺点**: 1. **性能开销**:序列化和反序列化可能...

    缓存List并写入文件持久化.zip

    在IT行业中,数据持久化是一项重要的任务,它指的是将数据保存到非易失性存储设备,以便在系统重启或关闭后仍然能够恢复。本案例中,“缓存List并写入文件持久化”的主题聚焦于如何将内存中的数据,特别是列表(List...

    Hibernate 数据持久化

    - **数据持久化**: 指的是程序中的对象状态在系统重启后仍然能够保存,即使没有内存支持也能保持其状态。在Hibernate中,数据持久化是通过对象和数据库记录之间的映射实现的。 2. **Hibernate 配置** - **...

    详解Android开发数据持久化之文件存储(附源码)

    本文主要探讨了Android数据持久化的文件存储方式,这是最基础的数据存储手段,适用于保存简单文本或二进制数据。 数据持久化是为了确保即使在应用程序关闭或设备断电后,内存中的数据仍能保持。Android提供了多种...

    精通Hibernate:对象持久化技术第二版part3

    本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate的配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系映射文件 52 3.4.1 映射文件的...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate的配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系映射文件 52 3.4.1 映射文件的...

    lightgbm模型保存为pmml文件 机器学习lgbm模型存为pmml文件 通过java调用jar

    首先,LightGBM模型的保存和加载是模型持久化的重要步骤。在Python中,我们可以使用`lightgbm`库提供的`save_model`和`load_model`函数来实现这一过程。例如,一旦模型训练完成,可以使用以下代码保存模型: ```...

    Hibernate和struts的整合架构中数据持久化技术的应用研究.pdf

    - **数据持久化技术**: 是指将程序中的数据存储到持久化存储介质(如硬盘)的过程。持久化技术有助于数据的长期保存,并支持跨系统和跨应用的数据共享。 - **Hibernate**: 是一个面向Java环境的对象关系映射(ORM)...

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    j文件存储(java代码)

    在Java编程语言中,文件存储是一项基础且重要的任务,特别是在处理数据持久化时。这个"j文件存储(java代码)"示例展示了如何利用Java的IO流来存储学生信息到文本文件中。以下是对给定文件的详细解读: 1. **View....

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    osworkflow在tomcat6下的持久化例子,用mysql

    在这个例子中,我们将探讨如何在Tomcat 6这样的Java应用服务器上配置并使用OSWorkflow,同时利用MySQL作为持久化存储。 首先,我们需要理解OSWorkflow的核心概念。它是基于Java的工作流管理系统,提供了一种声明式...

    servlet 文件上传下载例子

    - **文件保存**: 一旦文件被接收,它们可能需要移动到持久化存储,如特定的文件夹,以供后续下载。 - **错误处理**: 需要考虑文件大小限制、文件类型检查以及上传过程中的其他异常情况。 2. **文件下载** - **...

    Hibernate 操纵持久化对象

    1. **创建(Save/SaveOrUpdate)**:将Java对象保存到数据库,使得对象成为持久化状态。 2. **加载(Load/Get)**:根据主键从数据库中获取对象,使对象变为持久化状态。 3. **更新(Update)**:当对象状态发生变化...

    Java文件上传案例

    在Java编程领域,文件上传是一项常见的任务,尤其在...总的来说,这个案例提供了一个全面的教程,涵盖了从用户界面设计、服务器端处理到数据持久化的整个过程。理解并实践这些知识点对于提升Java Web开发技能至关重要。

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项...总结,Java对象的序列化和反序列化是Java编程中的基础概念,它涉及到数据持久化、网络通信等多个方面。理解并熟练运用这一技术,能够帮助开发者更有效地管理和传递数据。

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包2

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

Global site tag (gtag.js) - Google Analytics