最近项目中有一个这样的需求,要做一个定时任务功能,定时备份数据库的操表,将表数据写入txt文件。因为文件的读写路径可能需要随时改动,所以写死或者写成静态变量都不方便,就考虑使用配置文件,这里总结些配置文件用法。


一、Java Properties类

1、Java中有个比较重要的的类Properties(java.util.Properties),是代表一个持久的一套详细属性,属性可以被保存到一个流或从流中加载的类。以下是关于属性的要点:

  • 属性列表中每个键及其对应值是一个字符串。

  • 一个属性列表可包含另一个属性列表作为它的“默认”,第二个属性可在列表中搜索,如果没有在原有的属性列表中找到的属性键。

  • 这个类是线程安全的;多个线程可以共享一个Properties对象,而不需要外部同步

  • 2、该类的主要方法如下:

    3、主要用于读取Java配置文件,存放一些经常用到的数据,方便程序员修改。该配置文件是个文本文件,后缀名为(.properties),

    文件的内容格式为“key=value”,文本注释可以使用”#“来注释。如下图:

    4、在配置文件中直接写中文读取的时候会有乱码,所以要转码成ASCII。eclipse最新版本中会自动转码,如果需要手动转码,可以借助一些在线转码工具,这里推荐一个:

    http://tool.oschina.net/encode?type=3


    二、Java Properties实例

    1、从目标路径test.properites中获取输入流对象

    2、使用Properties类的load()方法从字节输入流中获取数据

    3、直接打印Properties对象

    4、使用Properties类的getProperty(String key)方法,根据参数key获取value

    5、具体代码如下:

    package example;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URL;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    import java.util.Properties; public class Test { public static void main(String[] args) {
    try {
    Properties prop = new Properties(); InputStream in = Test.class.getClassLoader().getResourceAsStream(
    "test.properties");
    prop.load(in);
    //直接输出prop对象
    System.out.println("直接输出prop对象:"+prop);
    //获取name的值
    String name=prop.getProperty("name");
    //获取address的值
    String address=prop.getProperty("address");
    //获取job的值
    String job=prop.getProperty("job");
    System.out.println("name="+name+",address="+address+",job="+job);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }
    }

    6、执行结果如下:

    从上图可以看出,job的值是乱码,说明在配置文件中不可以直接使用中文。还有#号后面的注释没有打印出来。


三、关于路径问题的补充

1、上述获得Properties配置文件中英文是通过Test.class.getClassLoader().getResourceAsStream()方法直接获得字节输入流,所以不用考虑路径中是否包含中文的问题,如果是通过Test.class.getClassLoader().getResource()方法,因为该方法返回值是URL,如果项目的目录中有中文命名,则获得的URL会出现乱码,所以使用

String path=URLDecoder.decode(url.getFile(), "utf-8");

2、具体代码如下:

package example;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Properties; public class Test { public static void main(String[] args) {
try {
Properties prop = new Properties();
Properties prop2 = new Properties();
// String path =Test.class.getClassLoader().getResource("example/china/test2.properties").getPath();
//获得URL路径
URL url=Test.class.getClassLoader().getResource("example/china/test2.properties");
//打印路径
System.out.println("url.getFile()="+url.getFile());
//将路径中的中文转码
String path=URLDecoder.decode(url.getFile(), "utf-8");
System.out.println("path="+path);
//通过路径获得字节输入流
InputStream input=new FileInputStream(path);
//直接获得字节输入流
InputStream in = Test.class.getClassLoader().getResourceAsStream("example/china/test2.properties"); prop.load(in);
prop2.load(input);
System.out.println("prop="+prop);
System.out.println("prop2="+prop2);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

3、输出结果:

Java关于Properties用法的总结(一)的更多相关文章

  1. Java关于Properties用法(二)——替换配置文件中的参数

    上一章讲了配置文件的基本用法,虽然上一章已经可以解决一些需求,但还不些不足之处.假如,配置文件里面的字符串有一部分需要经常变动,另外一些不需要,上一章的方法就不方便了,所以这章主要讲如何在配置文件中使 ...

  2. JAVA中properties基本用法

    转载 源地址不详 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式, ...

  3. Java读取properties配置文件经常用法

    在开发中对properties文件的操作还是蛮常常的.所以总结了几种操作方法,为后面的开发能够进行參考. 1.通过java.util.ResourceBundle类来读取 这边測试用到了枚举类进行传入 ...

  4. java IO流之文件切割两例(含Properties 用法)

    package cn.itcast.io.p1.splitfile; import java.io.File;import java.io.FileInputStream;import java.io ...

  5. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

  6. java读取properties文件的几种方法

    一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取 Properties p=new Properties(); ...

  7. java.util.Properties 读取配置文件中的参数

    用法 getProperty方法的返回值是String类型. java.util.Properties 读取配置文件中的参数 //读取配置文件 FileInputStream inStream = n ...

  8. Android中使用java.util.Properties犯的错

    今天尝试使用java.util.Properties来保存应用配置,然而遇到了好几个问题,对于熟悉此内容的来说可能都是猪一样的错误,但难免有像我一样的新手再次遇到,希望此文能有所帮助. 错误1 jav ...

  9. java 读写properties (配置)文件

    Properties属性文件在Java应用程序中是经常可以看得见的,也是特别重要的一类文件.它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必要使用数据库文件来保存,而使用一般的文 ...

随机推荐

  1. fir.im Weekly - 给 Mac 应用开发者的教程

    写作是一件苦差事.无论写代码,还是写文章. 关于 Mac 应用开发,国内很少有完整的书籍或教程.最近@剑指人心写的 <Mac 应用开发基础教程>终于!完!稿!了! 这本书中对 Mac 平台 ...

  2. vuejs件同一个挂载点上切换组

    vuejs件同一个挂载点上切换组 动态组件 http://cn.vuejs.org/guide/components.html#动态组件 多个组件可以使用同一个挂载点,然后动态地在它们之间切换.使用保 ...

  3. WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享

    系列文章目录  WPF自定义控件与样式(1)-矢量字体图标(iconfont) WPF自定义控件与样式(2)-自定义按钮FButton WPF自定义控件与样式(3)-TextBox & Ric ...

  4. 深入理解PHP内核(十三)类的结构和实现

    原文链接:http://www.orlion.ga/1117/ 先看一下类的结构: struct _zend_class_entry {     char type;     // „类型:ZEND_ ...

  5. IllegalStateException : Web app root system property already set to different value问题详解

    一.问题描述     最近公司有了一个新项目,这个项目最近部署到测试服务器上的时候出现了一个问题. 严重: Exception sending context initialized event to ...

  6. jsoup简单的爬取网页数据

    /** * Project Name:JavaTest * File Name:BankOfChinaExchangeRate.java * Package Name:com.lee.javatest ...

  7. JSP开发环境配置问题解答

    有过JSP开发经验的同学对于JSP开发环境的配置一定非常的很有感触,十分的繁琐,有时因为一个小的问题导致我们配置的配置前功尽弃,本篇我将重点带领大家一起探讨一下关于JSP环境配置的一些常见问题,及解决 ...

  8. SharePoint Server 2013开发之旅(四):配置工作流开发和测试环境

    工作流这个功能,在SharePoint Server 2013中做了很大的改动.我们可以从微软官方的文档中了解一下大概的情况 http://technet.microsoft.com/zh-cn/li ...

  9. 使用 CSS3 实现 3D 图片滑块效果【附源码下载】

    使用 CSS3 的3D变换特性,我们可以通过让元素在三维空间中变换来实现一些新奇的效果. 这篇文章分享的这款 jQuery 立体图片滑块插件,利用了 3D transforms(变换)属性来实现多种不 ...

  10. 【JVM】JVM之类加载器

    一.前言 首先,小小测试,看是否已经掌握了JVM类加载的过程 1.1.测试一 class Singleton { private static Singleton sin = new Singleto ...