网站seo测评,云做网站,国外黄冈网站推广软件,博采网络股吧最近项目中有一个这样的需求#xff0c;要做一个定时任务功能#xff0c;定时备份数据库的操表#xff0c;将表数据写入txt文件。因为文件的读写路径可能需要随时改动#xff0c;所以写死或者写成静态变量都不方便#xff0c;就考虑使用配置文件#xff0c;这里总结些配置… 最近项目中有一个这样的需求要做一个定时任务功能定时备份数据库的操表将表数据写入txt文件。因为文件的读写路径可能需要随时改动所以写死或者写成静态变量都不方便就考虑使用配置文件这里总结些配置文件用法。 一、Java Properties类 1、Java中有个比较重要的的类Properties(java.util.Properties)是代表一个持久的一套详细属性属性可以被保存到一个流或从流中加载的类。以下是关于属性的要点 属性列表中每个键及其对应值是一个字符串。 一个属性列表可包含另一个属性列表作为它的“默认”第二个属性可在列表中搜索如果没有在原有的属性列表中找到的属性键。 这个类是线程安全的;多个线程可以共享一个Properties对象而不需要外部同步 2、该类的主要方法如下 3、主要用于读取Java配置文件存放一些经常用到的数据方便程序员修改。该配置文件是个文本文件后缀名为(.properties) 文件的内容格式为“keyvalue”文本注释可以使用”#“来注释。如下图 4、在配置文件中直接写中文读取的时候会有乱码所以要转码成ASCII。eclipse最新版本中会自动转码如果需要手动转码可以借助一些在线转码工具这里推荐一个 http://tool.oschina.net/encode?type3 二、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 nameprop.getProperty(name);//获取address的值String addressprop.getProperty(address);//获取job的值String jobprop.getProperty(job);System.out.println(namename,addressaddress,jobjob);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
} 6、执行结果如下 从上图可以看出job的值是乱码说明在配置文件中不可以直接使用中文。还有#号后面的注释没有打印出来。三、关于路径问题的补充 1、上述获得Properties配置文件中英文是通过Test.class.getClassLoader().getResourceAsStream()方法直接获得字节输入流所以不用考虑路径中是否包含中文的问题如果是通过Test.class.getClassLoader().getResource()方法因为该方法返回值是URL如果项目的目录中有中文命名则获得的URL会出现乱码所以使用 String pathURLDecoder.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 urlTest.class.getClassLoader().getResource(example/china/test2.properties);//打印路径System.out.println(url.getFile()url.getFile());//将路径中的中文转码String pathURLDecoder.decode(url.getFile(), utf-8);System.out.println(pathpath);//通过路径获得字节输入流InputStream inputnew FileInputStream(path);//直接获得字节输入流InputStream in Test.class.getClassLoader().getResourceAsStream(example/china/test2.properties);prop.load(in);prop2.load(input);System.out.println(propprop);System.out.println(prop2prop2);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
} 3、输出结果 转载于:https://www.cnblogs.com/gongchenglion/p/properties.html