网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.写bean类的准则(1).
.有效地记录日志简化企业的开发过.
.java学习体悟 作者: huli·yesk.
.Java中常见的异常.
.如何迅速成为Java高手[Tomjava原.
.Java程序的性能优化StringBuffer.
.再说面向对象.
.Spring AOP之Hello World.
.化繁为简 用Spring改进J2EE编程(.
.怎样设计合适的接口.
.如何设计出具有GUI特色的“纯”J.
.使用web.xml控制Web应用的行为一.
.查询分页与CheckBox全选提交.
.常见的十四种Java开发工具及其特.
.Java教室: Garbage Collection 清.
.J2EE的发展历程.
.垃圾!.
.超级简单的sqlmap工具(ajf sql m.
.java 有影子的数字时钟程序.
.Java的网络功能与编程4.

用java读写ini配置文件的原因以及实现

发表日期:2008-1-5



  在Java中,配置文件一般主要是两种形式:XML文件或者property文件。但大部分人都习惯使用ini文件,而且ini文件的分节以及注释功能,比起xml,也是易懂易用的。
  
  在vc中类库中有读写ini文件的标准函数。在dephi或其他语言中,也可以用windows的api函数来读写ini文件。但在java中似乎没有现成的类和方法可供使用。虽然java可以通过加载dll文件的方法来调用windows的api,但总觉得不够正宗。
  
  于是自己写了个读写ini配置文件的类,供大家参考。
  
  import java.io.BufferedReader;
  import java.io.BufferedWriter;
  import java.io.FileReader;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  
  /**
  * 这是个配置文件操作类,用来读取和设置ini配置文件
  * @author 由月
  * @version 2004-08-18
  */
  public final class ConfigurationFile {
  /**
  * 从ini配置文件中读取变量的值
  * @param file 配置文件的路径
  * @param section 要获取的变量所在段名称
  * @param variable 要获取的变量名称
  * @param defaultValue 变量名称不存在时的默认值
  * @return 变量的值
  * @throws IOException 抛出文件操作可能出现的io异常
  */
  public static String getProfileString(
  String file,
  String section,
  String variable,
  String defaultValue)
  throws IOException {
  String strLine, value = "";
  BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
  boolean isInSection = false;
  try {
  while ((strLine = bufferedReader.readLine()) != null) {
  strLine = strLine.trim();
  strLine = strLine.split("[;]")[0];
  Pattern p;
  Matcher m;
  p = Pattern.compile("\\[\\s*.*\\s*\\]");
  m = p.matcher((strLine));
  if (m.matches()) {
  p = Pattern.compile("\\[\\s*" + section + "\\s*\\]");
  m = p.matcher(strLine);
  if (m.matches()) {
  isInSection = true;
  } else {
  isInSection = false;
  }
  }
  if (isInSection == true) {
  strLine = strLine.trim();
  String[] strArray = strLine.split("=");
  if (strArray.length == 1) {
  value = strArray[0].trim();
  if (value.equalsIgnoreCase(variable)) {
  value = "";
  return value;
  }
  } else if (strArray.length == 2) {
  value = strArray[0].trim();
  if (value.equalsIgnoreCase(variable)) {
  value = strArray[1].trim();
  return value;
  }
  } else if (strArray.length > 2) {
  value = strArray[0].trim();
  if (value.equalsIgnoreCase(variable)) {
  value = strLine.substring(strLine.indexOf("=") + 1).trim();
  return value;
  }
  }
  }
  }
  } finally {
  bufferedReader.close();
  }
  return defaultValue;
  }
  /**
  * 修改ini配置文件中变量的值
  * @param file 配置文件的路径
  * @param section 要修改的变量所在段名称
  * @param variable 要修改的变量名称
  * @param value 变量的新值
  * @throws IOException 抛出文件操作可能出现的io异常
  */
  public static boolean setProfileString(
  String file,
  String section,
  String variable,
  String value)
  throws IOException {
  String fileContent, allLine,strLine, newLine, remarkStr;
  String getValue;
  BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
  boolean isInSection = false;
  fileContent = "";
  try {
  
  while ((allLine = bufferedReader.readLine()) != null) {
  allLine = allLine.trim();
  if (allLine.split("[;]").length > 1)
  remarkStr = ";" + allLine.split(";")[1];
  else
  remarkStr = "";
  strLine = allLine.split(";")[0];
  Pattern p;
  Matcher m;
  p = Pattern.compile("\\[\\s*.*\\s*\\]");
  m = p.matcher((strLine));
  if (m.matches()) {
  p = Pattern.compile("\\[\\s*" + section + "\\s*\\]");
  m = p.matcher(strLine);
  if (m.matches()) {
  isInSection = true;
  } else {
  isInSection = false;
  }
  }
  if (isInSection == true) {
  strLine = strLine.trim();
  String[] strArray = strLine.split("=");
  getValue = strArray[0].trim();
  if (getValue.equalsIgnoreCase(variable)) {
  newLine = getValue + " = " + value + " " + remarkStr;
  fileContent += newLine + "\r\n";
  while ((allLine = bufferedReader.readLine()) != null) {
  fileContent += allLine + "\r\n";
  }
  bufferedReader.close();
  BufferedWriter bufferedWriter =
  new BufferedWriter(new FileWriter(file, false));
  bufferedWriter.write(fileContent);
  bufferedWriter.flush();
  bufferedWriter.close();
  
  return true;
  }
  }
  fileContent += allLine + "\r\n";
  }
  }catch(IOException ex){
  throw ex;
  } finally {
  bufferedReader.close();
  }
  return false;
  }
  /**
  * 程序测试
  */
  public static void main(String[] args) {
  //String value = Config.getProfileString("sysconfig.ini", "Option", "OracleDB", "default");
  //System.out.println(value);
  try {
  System.out.println(ConfigurationFile.setProfileString("d:/1.ini", "Settings", "SampSize", "111"));
  } catch (IOException e) {
  System.out.println(e.toString());
  }
  }
  }
上一篇:基于Java的IDEA加密算法探讨 人气:989
下一篇:Java入门攻略之HelloWorld问题 人气:544
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐