最近项目中有一个这样的需求,要做一个定时任务功能,定时备份数据库的操表,将表数据写入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、输出结果:

转载于:https://www.cnblogs.com/gongchenglion/p/properties.html

Java关于Properties用法的总结(一)相关推荐

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

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

  2. java properties用法_java中Properties文件加载和使用方法

    一.Properties简介 Properties 类继承自HashTable,提供的方法很像Map的实现类HashMap.它在 Java 编程的早期就有了,并且几乎没有什么变化.J2SE 的 Tig ...

  3. JAVA中properties基本用法

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

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

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

  5. JAVA 操作 properties 配置文件

    一.简介 Java中的properties文件是一种纯文本格式的配置文件,主要用于表达配置信息,文件类型为 *.properties,文件中内容的格式是 "键=值" 的格式.在pr ...

  6. JAVA操作properties配置文件

    一.简介 <1> java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值&quo ...

  7. 原生java读取properties与spring中@value、@ConfigurationProperties读取配置文件

    原生java读取properties与spring中@value.@ConfigurationProperties读取配置文件 1.properties类 Properties 继承于 Hashtab ...

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

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

  9. java name.endswith,Java CompositeName endsWith()用法及代码示例

    javax.naming.CompositeName类的endsWith()方法用于检查作为参数传递的复合名称是否是该复合名称的后缀.如果此复合名称对象以" X"结尾,则复合名称& ...

最新文章

  1. Linux下开发优秀链接
  2. slam中特征点归一化原因以及方法
  3. java读取大txt文件_使用java读取txt里边的文件内容并获取大小(M).txt
  4. CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并
  5. java 一般方法_一般覆盖Java中的方法
  6. Python之一行代码
  7. SPICE:过程改进的又一种选择
  8. Eclipse4.8.0无法打开 Eclipse MarketPlace
  9. 深入浅出多网卡绑定技术
  10. 【Python基础】11_Python中的字符串
  11. 坦克大战代码_坦克大战系列文章-坦克大战简介
  12. 揭开网络编程常见API的面纱【下】
  13. 美国空军学习编程,为五角大楼节省了上百万!
  14. 临时笔记, 有意思的东西
  15. Java并发编程笔记之ArrayBlockingQueue源码分析
  16. 服务器双网卡导致的网络故障及解决方案
  17. android 基站 变化,(转)android定位之基站定位
  18. 最新简约轻量版H5手机微商城运营源码对接最新Z支付个人免签接口
  19. PD 关于tso 分配源代码分析
  20. java添加tomcat_Java以及Tomcat配置

热门文章

  1. 深度学习之生成对抗网络(2)GAN原理
  2. 《计算机网络》_学习笔记(一)
  3. mysql创建管理密码_mysql 创建用户与授权、修改密码
  4. c malloc 头文件_干货笔记 | C/C++笔试面试详细总结(二)
  5. FPGA 资料搜集记录
  6. SQL查询中having和where的异同点
  7. html两个框架同时_两个框架的故事
  8. fast.ai_使用fast.ai自组织地图—步骤4:使用Fast.ai DataBunch处理非监督数据
  9. python模型部署方法_终极开箱即用的自动化Python模型选择方法
  10. 作家百态之二:山南海北