Java中的Properties类

时间:2021-08-11作者:klpeng分类:IT综合浏览:191评论:0

        在这一篇文章中提到了Java如何连接Oracle数据库,Java如何连接Oracle数据库

        其中下图所展示的四个字符串,一个是驱动注册获取实例化对象的路径,另外三个是获取连接对象时需要的url和账号密码。如果我也是使用这个类来连接MySQL数据库的话,就要对其代码进行修改,当代码一多可能会很难找到,对其操作不便。

        并且,如果仍然使用连接Oracle修改了账号密码,似乎对其修改也表现出其不灵活。这个时候就可以用Properties类将下面的四个字符串写入打配置文件中,在配置文件进行修改反而更加清晰可见。

Java中的Properties类

         首先我们创建一个MyProperties.properties文件,与一般的.txt文本文件不同在于就是后缀名的不一样。 这样的话其实就用用到流来进行文件的读入读出。

        配置文件里的内容其实跟Map也非常相像,用 key = value  的格式来表示一行数据。一个key对应一个value .我们可以通过Key键来获取到value值。

 1.   写入配置文件 

        写入配置文件,可以在.properties后缀文件里手动写入,注意格式就可。下面介绍如何通过代码实现。

        首先我们创建一个Properties类的对象,使用setProperties(String key , String value)方法,来设置配置文件,类似与Map类中的put();

Java中的Properties类

 按照上述的内容进行key和value一一对应的写入到Properties对象中。

        

        Properties properties = new Properties();
		properties.setProperty("driver_name","oracle.jdbc.driver.OracleDriver");
		properties.setProperty("url","jdbc:oracle:thin:@oracle:1521:orcl");
		properties.setProperty("user","scott" );
		properties.setProperty("password", "1234");
      

         设置好Properties对象的内容后,就可以写入到MyProperties.properties了,用到的是Properties类中store()方法; 将Properties对象输出到MyProperties.properties。可以使用字节输出流OutputStream,字符输出流Writer。 其输出流对象的文件路径就是配置文件的路径

        void store(OutputStream out , String comments); 

        void store(Writer writer , String comments )

        其中comments就是可以写在配置文件里的注释。

        //使用字符流输出流 将Properties对象写入到MyProperties.properties中

        FileWriter writer = new FileWriter("MyProperties.properties");
        properties.store(writer, "Oracle");
        writer.close();
        

        //使用字节流输出流 将Properties对象写入到MyProperties.properties中
        FileOutputStream out = new FileOutputStream("MyProperties.properties");
        properties.store(out,"Oracle");
        out.close();

现在配置文件就写入成功了

 Java中的Properties类

2.读入配置文件

        读入文件自然用到的是输入流。使用字节输入流和字符输入流都行。 然后使用load()方法加载到Properties对象中就可以了。下面以字节输入流为例。

         void load(InputStream in);

         void load(Reader read);

        InputStream in = new FileInputStream("MyProperties.properties");
		
		Properties properties = new Properties();
		properties.load(in);

       这个时候配置文件就读入到Properties对象中了,既然设置配置文件内容是setProperty(),那么获取配置文件内容无非就是getProperty(String key)方法了。这个是需要通过键来获取到值。

        根据上述读入的配置文件获取需要的键值对。

        

		System.out.println("driver_name="+properties.getProperty("driver_name"));
		System.out.println("url="+properties.getProperty("url"));
		System.out.println("user="+properties.getProperty("user"));
		System.out.println("password="+properties.getProperty("password"));

         输出结果就是这样。

Java中的Properties类

        上述是因为知道键的值是多少,那假如我不知道Properties对象里的键是什么呢? 我们就可以用到Properties类中的stringPropertyNames()方法,得到所有键的字符串集合。在通过getProperty()来获取值。

        那我们就可以这样

  

public static void inputProperties(Properties p) {
		//返回Properties对象的Key集合 ,
		for(String e:p.stringPropertyNames()) {
			System.out.println(e +" = "+p.getProperty(e));
		}
	}

调用这个方法就得到了配置文件的所有键值对内容。

Java中的Properties类

        另外除了用流的方法来获取配置文件的信息,当配置文件路径在src下时,就可以使用util包的ResourceBundle类来快速获取配置文件信息。

        下面的MyProperties.properties文件在src下的Resource包下

通过已知键输出配置文件信息:

        

        ResourceBundle bundle = ResourceBundle.getBundle("Resource/MyProperties");
		String driver_name = bundle.getString("driver_name");
		String url = bundle.getString("url");
		String user = bundle.getString("user");
		String password = bundle.getString("password");
		System.out.println("driver_name = "+driver_name);
		System.out.println("url = "+url);
		System.out.println("user = "+user);
		System.out.println("password = "+password);

通过未知键输出配置文件信息:

        跟上述流操作类似,无非就是获取配置文件的所有键集合,然后遍历。通过键的值去获取到对应的值。

        ResourceBundle bundle = ResourceBundle.getBundle("Resource/MyProperties");
        
        //获取到配置文件的所有键集合。
		for(String s:bundle.keySet()) {
			System.out.println(s+"="+bundle.getString(s));
		}

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢