`

保存Java程序状态及设置Properties文件

阅读更多
在Windows开发中,可以使用*.ini文件来保存程序的状态或设置等数据,并且一般都提供了操作ini文件的API。但在Java中怎么实现类似的功能呢?比如,在程序中,我们需要保存一个窗口的位置,让程序在下次启动的时候,仍然保持在上一次关闭的时候的位置,或者程序需要将数据库连接的设置保存下来。

在前面一篇<<保存Java程序状态及设置之对象序列化>>中介绍了使用序列化的类来保存这些数据,本篇文章介绍使用Properties文件来保存.Properties文件的本质就是一个文本文件,文件中使用属性和值来保存数据,如:abc.name=Colin。使用Porperites文件来保存实际上就是创建一个Properites 文件,在程序关闭的时候,将数据写入文件,再等程序启动的时候,从这个Properties文件中读出数据。

我们假设有一个对象frame,在启动的时候要从一个properties文件中读取数据,再根据读取的数据来设置其位置及大小,在frame关闭的时候将位置,大小等数据保存到properties文件中。

用JAVA轻松操作properties文件

发个例子大家自己看哈.
package control;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;

public class TestMain {

//根据key读取value
public static String readValue(String filePath,String key) {
  Properties props = new Properties();
        try {
         InputStream in = new BufferedInputStream (new FileInputStream(filePath));
         props.load(in);
         String value = props.getProperty (key);
            System.out.println(key+value);
            return value;
        } catch (Exception e) {
         e.printStackTrace();
         return null;
        }
}

//读取properties的全部信息
    public static void readProperties(String filePath) {
     Properties props = new Properties();
        try {
         InputStream in = new BufferedInputStream (new FileInputStream(filePath));
         props.load(in);
            Enumeration en = props.propertyNames();
             while (en.hasMoreElements()) {
              String key = (String) en.nextElement();
                    String Property = props.getProperty (key);
                    System.out.println(key+Property);
                }
        } catch (Exception e) {
         e.printStackTrace();
        }
    }

    //写入properties信息
    public static void writeProperties(String filePath,String parameterName,String parameterValue) {
     Properties prop = new Properties();
     try {
      InputStream fis = new FileInputStream(filePath);
            //从输入流中读取属性列表(键和元素对)
            prop.load(fis);
            //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
            //强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
            OutputStream fos = new FileOutputStream(filePath);
            prop.setProperty(parameterName, parameterValue);
            //以适合使用 load 方法加载到 Properties 表中的格式,
            //将此 Properties 表中的属性列表(键和元素对)写入输出流
            prop.store(fos, "Update '" + parameterName + "' value");
        } catch (IOException e) {
         System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
        }
    }

    public static void main(String[] args) {
     readValue("info.properties","url");
        writeProperties("info.properties","age","21");
        readProperties("info.properties" );
        System.out.println("OK");
    }
}
分享到:
评论
1 楼 xiaoqing20 2010-01-16  
还不错,有意思 

相关推荐

    基于java的手机批量导入微信手机号系统,检测是否开通(源码及数据库文件)

    此外,项目中可能还包含了一些关键的配置文件,如application.properties或application.yml,用于配置SpringBoot应用的环境变量、数据库连接信息等。开发者可能还会使用IntelliJ IDEA这样的集成开发环境(IDE)来...

    java程序设计考题

    Java程序设计涵盖了多个方面,包括图形用户界面设计、算法实现、线程操作、输入输出流、文件操作以及网络通信。以下是对这些知识点的详细说明: 1. **图形用户界面(GUI)**:Java提供了Swing和JavaFX库来创建丰富...

    飞机大战Java版javaSwing

    游戏状态(如分数、等级等)可以通过文件系统持久化,例如使用Properties类保存配置,或者JSON库(如Jackson)存储复杂数据结构。 综上所述,"飞机大战Java版Java Swing"是一个结合了Java基础、GUI编程、面向对象...

    java单机双人泡泡堂源码

    4. **配置文件(.txt或.properties)**:用于存储游戏设置,如玩家信息、关卡数据等。 5. **主程序入口(Main Class)**:启动游戏的起点,负责初始化游戏环境并控制游戏流程。 6. **项目构建文件(如build.gradle或...

    Java范例开发大全 (源程序)

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5...

    Java范例开发大全(全书源程序)

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...

    自制Java拼图小游戏.zip

    1. **源代码**(src目录):Java程序的主体部分,包括.java文件,这些文件包含了类和方法的定义,实现了拼图游戏的逻辑。 2. **资源文件**(如res目录):可能包含游戏的图像、音频、配置文件等,用于增强游戏的视觉...

    java版本雷电源码

    Java提供了`Properties`类或其他文件I/O方法来实现数据的存储和读取。 9. **多线程**:高级游戏可能会使用多线程来优化性能,例如将游戏逻辑和渲染分开在不同的线程上执行。 通过分析【标签】"java 雷电 源码",...

    java 面试题 总结

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    ChickBoxs_java_

    在【压缩包子文件的文件名称列表】"ChickBoxs"中,我们可以推测这是整个项目或者源代码的根目录,其中可能包含源代码文件(如.java文件)、资源文件(如图片、音频等)、配置文件(如XML或properties文件)以及可能...

    针对欢乐斗地主的Java仿制版

    4. **文件存储与读取**:游戏状态、用户信息等可能需要持久化存储,这可能涉及文件IO操作,如使用Properties类保存和加载配置文件。 5. **异常处理**:良好的异常处理机制可以确保程序在遇到错误时不会崩溃,提高...

    java范例开发大全源代码

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12 ...

    java范例开发大全

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...

    JAVA毕业设计-打飞机游戏设计与实现(论文+源代码).zip

    1. `project.properties`:这是Android项目的配置文件,用于记录项目的属性,如编译SDK版本、依赖库等。 2. `论文`:这通常包含设计报告或研究论文,详细解释了游戏的设计理念、实现方法、遇到的问题及解决方案。 3....

    tomcat 日志设置解决方案

    在IT行业中,日志管理是系统运维和故障排查的关键环节,尤其对于服务器应用程序如Tomcat而言,正确配置日志能够帮助我们及时了解应用状态、定位问题。本篇将详细讲解Tomcat日志设置的相关知识点,旨在提供一套实用的...

    java范例开发大全(pdf&源码)

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...

    超级有影响力霸气的Java面试题大全文档

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    spring boot搭建Linux文件系统案例

    为了将图片保存到Linux文件系统,我们需要在服务器上设置一个目录作为存储位置。在Spring Boot中,可以使用`@Value`注解注入配置文件(如`application.properties`或`application.yml`)中的路径变量。然后,使用...

    apache-tomcat-8.5.28-windows-x64

    Apache Tomcat 8.5.28 是一个广泛使用的开源软件,它是一个Java Servlet容器,专为部署Java Web应用程序而设计。Tomcat是Apache软件基金会的Jakarta项目的一部分,是符合Java EE规范的轻量级应用服务器,尤其适用于...

    Eclipse调试常用技巧

    本机作为客户端时,需要在远程服务器的 Java 程序启动时添加远程调试开关,如 `-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000`。在 Eclipse 中新建远程调试配置进行连接。本机作为服务端时,服务器...

Global site tag (gtag.js) - Google Analytics