zoukankan      html  css  js  c++  java
  • 使用java读写properties文件属性

      在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述使用java读写properties文件属性,更多Java专业知识,广州疯狂java培训官网与你分享;

      自己定义一个属性文件:例如prop.properties

      baseFilePath=D:/kuanter/resource

      tesx=abcd

      我们要做的第一步就是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 InputStream的子类FileInputStream将属性文件读取到Properties对象中,知道prop.properties的路径,我们就用FileInputStream(String name)构造函数:

      Properties prop = new Properties();//属性集合对象

      FileInputStream fis = new FileInputStream("prop.properties");//属性文件流

      prop.load(fis);//将属性文件流装载到Properties对象中

      1.//获取属性值,baseFilePath已在文件中定义

      2.System.out.println("获取属性值:baseFilePath=" + prop.getProperty("baseFilePath"));

      3.//获取属性值,country未在文件中定义,将在此程序中返回一个默认值,但并不修改属性文件

      4.System.out.println("获取属性值:country=" + prop.getProperty("country", "中国"));

      在保存属性集合到文件之前,我们还有一件事情就是如何修改和添加新的属性到属性集合,这里使用了一个方法就是setProperty(String key, String value),这个方法就是当属性集合中存在指定的key时,就修改这个key的值,如果不存在,就新建一个key,同样是通过键值关系保存的,但值得注意的是,Properties类继承自Hashtable,所以也可以用Hashtable的put和putAll方法保存,但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在"有危险"的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。那好,下面我们就来看看修改、添加和保存属性的程序:

      //修改baseFilePath的属性值

      prop.setProperty("baseFilePath", "Boxcode");

      //添加一个新的属性studio

      prop.setProperty("studio", "Boxcode Studio");

      //文件输出流

      FileOutputStream fos = new FileOutputStream("prop.properties");

      //将Properties集合保存到流中

      prop.store(fos, "Copyright (c) Boxcode Studio");

      fos.close();//关闭流

      在我们知道如何读写一个属性文件之后,我们仍然还有很多需要注意的问题,因为load和store方法都是按照ISO-8859-1的编码方式读写属性流文件的,而ILatin1 的字符和某些特殊字符,而对于非Latin1 的字符和某些特殊字符,则要使用与字符和字符串字面值所用的类似转义序列,以值和元素的形式来表示它们。所以当我们在处理中文时,不可以在直接修改属性文件时,将中文的值赋予给属性,而是要在JAVA程序中通过setProperty方法给属性赋予中文的值,因为这样store会将中文转换成 unicode码,在读取时系统会将读取到的unicode码按系统的编码打印出来,对于中文系统,通常是GBK码,这样中文才能够正常显示。

      具体在项目中的属性文件读写

      package TestPropertis;

      //import java.io.FileInputStream;

      //import java.io.FileNotFoundException;

      import java.io.IOException;

      import java.io.InputStream;

      //import java.net.URL;

      import java.util.Properties;

      /**

      * TODO

      * @author admin

      * @date 2012-11-22 下午05:17:28

      */

      public class ReadWirtePropertis {

      public static void main(String[] args) {

      Properties pro = new Properties();//属性集合对象

      // URL url = Thread.currentThread()。getContextClassLoader()。getResource("prop.properties");//获取项目中文件的路径

      InputStream path =Thread.currentThread()。getContextClassLoader()。

      getResourceAsStream("prop.properties");//获取路径并转换成流

      // try {

      // FileInputStream fis = new FileInputStream("属性文件创建在电脑上");

      try {

      // pro.load(fis);//将属性文件流装载到Properties对象中

      pro.load(path);

      // fis.close();

      System.out.println(pro.getProperty("baseFilePath"));

      pro.setProperty("shuzi", "1111");//往属性文件插值

      pro.setProperty("shuzi", "222");//更改属性值

      System.out.println(pro.getProperty("shuzi"));

      } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      }

      // } catch (FileNotFoundException e) {

      // // TODO Auto-generated catch block

      // e.printStackTrace();

      // }

      }

      }

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。高薪从IT名企请来项目经理为学员亲自授课,对学员进行实战教学,在没有工作经验的学员,在疯狂java,通过大量全真经典企业级项目进行集中培训,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,成就感,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

  • 相关阅读:
    数据库部署
    css常见问题
    extjs记录
    C#相关问题
    window疑难问题解决
    常用linq
    不同数据库之间的相互链接
    聊天数据库
    无线路由接入
    [转]如何才能让你的简历被谷歌相中
  • 原文地址:https://www.cnblogs.com/gojava/p/3368578.html
Copyright © 2011-2022 走看看