java读取properties文件内容,spring读取properties配置文件

  java读取properties文件内容,spring读取properties配置文件

  我们平时写程序的时候,经常会改变一些参数,而这个改变并不是我们所预测的。例如,我们开发了一个操作数据库的模块。我们在开发的时候,连接的是本地数据库,所以IP、数据库名、表名、数据库主机等信息都是本地的。为了使这个操作数据的模块通用,上述信息不能写入程序中。我们通常的做法是用配置文件来解决。

  每种语言都有自己支持的配置文件类型。例如,Python支持。ini文件。因为其中有一个ConfigParser类来支持对。ini文件,程序员可以操作。ini文件根据这个类提供的方法自由。然而,在Java中,Java支持。属性文件。JDK内置的java.util.Properties类为我们操作提供了方便。属性文件。

  我.的形式.属性文件=============================================================

  #以下是服务器和数据库信息。

  dbPort=localhost

  databaseName=mydb

  dbUserName=root

  dbPassword=root

  #以下是数据库表信息

  dbTable=mytable

  #以下是服务器信息

  ip=192.168.0.9

  在上面的文件中,我们假设文件名是:test.properties文件。其中#注释信息的第一行;等号的左边“=”我们称之为key我们称它为等号“=”右边的值。(其实就是我们常说的键值对。)key应该是我们程序中的一个变量。和值由我们根据实际情况进行配置。

  二。JDK属性类中的属性类存在于Java.util单元格中,继承自Hashtable。它提供了几种主要的方法:1 .GetProperty(字符串键),在此属性列表中搜索具有指定键的属性。也就是通过参数key获得key对应的值。

  2.Load (InputStream instream),它从输入流中读取属性列表(键和元素对)。通过加载获取指定文件(比如上面的test.properties文件)中的所有键值对。供getProperty(字符串键)搜索。3.设置属性(stringkey,stringvalue),调用Hashtable的put方法。他通过调用基类的put方法来设置键值对。

  4.Store (output stream out,string comments),它将属性表中的属性列表(键和元素对)写入输出流,格式适合使用load方法加载到属性表中。与load方法相反,此方法将键值对写入指定的文件。

  5.Clear(),清除所有加载的键值对。基类中提供了此方法。

  用上面的方法,我们可以操作。属性文件!

  三。代码示例

  包配置;

  import Java . io . file inputstream;

  import Java . io . filenotfoundexception;

  import Java . io . file output stream;

  import Java . io . io exception;

  import Java . util . properties;

  /***//**

  *读取属性文件

  *@authorQutr

  *

  */

  publicclassConfiguration

  .{

  privatePropertiespropertie

  privateFileInputStreaminputFile;

  privateFileOutputStreamoutputFile;

  /***//**

  *初始化配置类

  */

  公共配置()

  .{

  propertie=new properties();

  }

  /***//**

  *初始化配置类

  *@paramfilePath要读取的配置文件的路径名。

  */

  public configuration(string file path)

  .{

  propertie=new properties();

  尝试.{

  inputFile=new file inputstream(file path);

  property . load(input file);

  input file . close();

  }catch(FileNotFoundExceptionex).{

  读取属性文件-失败!-原因:文件路径错误或文件不存在’);

  ex . printstacktrace();

  }catch(IOExceptionex).{

  System.out.println(加载文件-失败!);

  ex . printstacktrace();

  }

  }//endReadConfigInfo(.)

  /***//**

  *重载该函数以获取key的值

  *@paramkey获取其值的键。

  *返回键的值

  */

  publicStringgetValue(Stringkey)

  .{

  if(property . contains key(key)).{

  string value=property ie . getproperty(key);//获取属性的值

  returnvalue

  }

  其他

  返回“”;

  }//endgetValue(.)

  /***//**

  *重载函数,得到键的值

  * @ paramfileNameproperties属性属性文件的路径文件名

  *@paramkey取得其值的键

  *@returnkey的值

  */

  publicStringgetValue(字符串文件名,Stringkey)

  .{

  尝试.{

  字符串值=" ";

  inputFile=newFileInputStream(文件名);

  财产。加载(输入文件);

  输入文件。close();

  如果(属性。包含密钥(密钥)).{

  价值=属性。getproperty(key);

  返回值

  }否则

  返回值

  }catch(FileNotFoundExceptione).{

  e。printstacktrace();

  返回"";

  }catch(IOExceptione).{

  e。printstacktrace();

  返回"";

  }catch(Exceptionex).{

  前任。printstacktrace();

  返回"";

  }

  }//endgetValue(.)

  /***//**

  *清除性能文件中所有的键和其值

  */

  publicvoidclear()

  .{

  财产。clear();

  }//结束clear();

  /***//**

  *改变或添加一个键的值,当键存在于性能文件中时该键的值被价值所代替,

  *当键不存在时,该键的值是价值

  *@paramkey要存入的键

  *@paramvalue要存入的值

  */

  publicvoidsetValue(Stringkey,Stringvalue)

  .{

  财产。设置属性(键,值);

  }//endsetValue(.)

  /***//**

  *将更改后的文件数据存入指定的文件中,该文件可以事先不存在。

  *@paramfileName文件路径文件名称

  * @描述对该文件的描述

  */

  publicfoidsavefile(字符串文件名,字符串描述)

  .{

  尝试.{

  outputFile=newFileOutputStream(文件名);

  propertie.store(outputFile,description);

  输出文件。close();

  }catch(FileNotFoundExceptione).{

  e。printstacktrace();

  }catch(IOExceptionioe).{

  ioe。printstacktrace();

  }

  }//endsaveFile(.)

  publistativoidmain(String[]args)

  .{

  配置RC=新配置( ./config/test。属性’);//相对路径

  stringip=RC。getvalue( IPP );//以下读取性能文件的值

  弦鬼=RC。getvalue(“主机”);

  string tab=RC。getvalue( tab );

  系统。出去。println( IP= IP IP-test leng= IP-test ).length());//以下输出性能读出的值

  系统。出去。println( IP的长度= IP。length());

  系统。出去。println( host= host);

  系统。出去。println( tab= tab);

  配置cf=新配置();

  Stringipp=cf.getValue( ./config/test.properties , IP );

  系统。出去。println( IPP= IPP );

  //cf . clear();

  cf.setValue(min , 999 );

  cf.setValue(max , 1000 );

  cf.saveFile(./config/save。perproperties , test );

  //ConfigurationsaveCf=new configuration();

  //saveCf.setValue(min , 10 );

  //saveCf.setValue(max , 1000 );

  //saveCf.saveFile( ./config/save。perproperties’);

  }//endmain()

  }//endclassReadConfigInfo

  四。小结通过上面的例子不难看出,在爪哇中操作配置文件是非常简单的。在一个需要用到大量配置信息的模块或系统里,我们有必要封装一个专门的类来共使用。通过最后的主要的函数调用,相信大家可以看出该类的用法。不足指出希望大家多多指点。

  爪哇属性文件的操作

  爪哇岛中的性能文件是一种配置文件,主要用于表达配置信息,文件类型为*.属性,格式为文本文件,文件的内容是格式是键=值的格式,在性能文件中,可以用#来作注释,属性文件在爪哇编程中用到的地方很多,操作很方便。下面是一个操作爪哇岛属性文件的例子,给出了操作方法和性能文件。从中可以看到如何读取性能文件,并应用读取出来的值,是学习操作性能文件的好例子。

  一、属性文件

  IcisReport.properties

  -

  ###################################################

  # 工商报表应用IcisReport的配置文件#

  # 作者:雷智民#

  # 日期:2006年11月21日#

  ###################################################

  #

  # 说明:业务系统主题和报表系统IcisReport是分离的

  # 可分开部署到不同的服务器上,也可以部署到同一个服务

  # 器上;IcisReprot作为独立的网应用程序可以使用任何

  # 的小型应用程序容器或者J2EE服务器部署并单独运行,也可以

  # 通过业务系统的接口调用作为业务系统的一个库来应用。

  #

  # IcisReport的互联网协议(互联网协议的缩写)

  icis报告。服务器。IP=192。168 .3 .143

  # IcisReport的端口

  IcisReport.server.port=8080

  # IcisReport的上下文路径

  icis报告。上下文路径=/icis报告

  -

  二、操作性能文件的爪哇岛方法

  下面是一个操作性能文件的方法

  -

  /**

  * @返回获取IcisReport报表应用的统一资源定位器

  */

  私有字符串getcisreporturl(){

  字符串icisReportURL=//IcisReport报表应用的统一资源定位器

  字符串icisReportServerIP=//IcisReport服务器的互联网协议(互联网协议)

  字符串icisReportServerPort=//IcisReport服务器的服务端口

  字符串icisReportContextPath=//IcisReport应用的上下文路径

  Properties prop=new Properties();

  输入流输入

  尝试{

  in=getClass().getResourceAsStream(/icis报告。属性’);

  支柱载荷(英寸);

  设置关键值=prop。keyset();

  for(迭代器it=键值。迭代器();它。有next();) {

  String key=(String)it。next();

  如果(关键。equals( icis报告。服务器。IP ){

  icisReportServerIP=(String)prop。get(键);

  } else if(键。equals( icis报告。服务器。端口){

  icisReportServerPort=(String)prop。get(键);

  } else if(键。equals( icis报告。上下文路径){

  icisReportContextPath=(String)prop。get(键);

  }

  }

  } catch(异常e) {

  log.error(IO读取出错,找不到IcisReport.properties!);

  }

  if (icisReportServerIP.trim().等于(""){

  log.error(请检查配置文件IcisReport.properties中的IcisReport.server.ip项的值是否正确!);

  }

  if (icisReportServerPort.trim().等于(""){

  log.error(请检查配置文件IcisReport.properties中的IcisReport.server.port项的值是否正确!);

  }

  if (icisReportServerPort.trim().等于(""){

  log.error(请检查配置文件IcisReport.properties中的IcisReport.server.port项的值是否正确!);

  }

  icisReportURL= http:// icisreportserverip。trim(): icisreportserverport。trim()icisreportcontextpath。trim();

  log.info(获取的icisReportURL= icisReportURL);

  返回icisReportURL

  }

  -

  总结:java的性能文件需要放到类路径下面,这样程序才能读取到,有关类路径实际上就是爪哇岛类或者库的存放路径,在爪哇岛工程中,属性放到班级文件一块。在网应用中,最简单的方法是放到网应用的we b-INF/类目录下即可,也可以放在其他文件夹下面,这时候需要在设置类路径环境变量的时候,将这个文件夹路径加到类路径变量中,这样也也可以读取到。在此,你需要对类路径有个深刻理解,类路径绝非系统中刻意设定的那个系统环境变量,WEB-INF/classes其实也是,java工程的班级文件目录也是。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: