⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configstream.java

📁 java开发的办公系统 1.系统管理 (地区管理,部门管理,菜单管理,用户管理,角色管理,权限) 2.工作流管理 (流程类别,流程) 3.字典管理 (国家,省份,城市,公共数据字典) 4.项目
💻 JAVA
字号:
package com.vere.util;
import java.util.*;
import java.util.logging.*;
import java.io.*;
/**
 * 负责对普通配置文件的操作
 * @author Uniquick
 * @version 1.0
 * @see
 */
public class ConfigStream {
  /**
   * The Logger instance. All log messages from this class are routed through
   * this member. The Logger namespace is <code></code>.
   */
  private Logger log = Logger.getLogger("com.uniq.util");
  public String fileName;
  /**
   * 缺省的构造函数,其中的文件名由配置文件定义
   * @throws Exception
   */
  public ConfigStream()throws Exception{
    String configFileName=System.getProperty("sCRM.HOME") + "/config/sCRM.conf";
    configFileName= configFileName.replace('\\','/');
    openConfigFile(configFileName);
  }
  /**
   * 构造函数
   * @param fileName  文件名称
   * @throws Exception
   */
  public ConfigStream(String fileName)throws Exception{
    openConfigFile(fileName);
  }
  /**
   * 打开文件
   * @param filename
   * @throws Exception 没有正常打开
   */
  private void openConfigFile (String fileName)throws Exception{
    File cfgFile = new File(fileName);
    if (cfgFile.exists()) {
      this.fileName = fileName;
    }else{
      log.log(Level.SEVERE,"The config file "+fileName+"don't exists!");
      throw new Exception("The config file " + fileName + "don't exists!");
    }
  }
  /**
   * 读取单个记录
   * @param path  段落路径
   * @param name  获取的数据项的名称
   * @return 数据项的值,如果没有该数据项则为null
   * @throws Exception
   */
  public String getItem(String path,String name) throws Exception{
    String result = null;
    String line = null;
    BufferedReader br = null;
    try {
      br = new BufferedReader(new FileReader(this.fileName));
      boolean pflag = false;
      while ((line = br.readLine()) != null) {
        line = line.trim();
        int equalLocation = line.indexOf("=");
        if (line.length() > 0 && line.substring(0,1).equals("[")) {
          if(pflag)
            pflag=false;
        }
        if (line.equalsIgnoreCase("[" +path+ "]")) {
          pflag = true ;
          continue;
        }
        if (pflag && line.length()>name.length() && name.equalsIgnoreCase(line.substring(0,equalLocation))) {
          result = line.substring(equalLocation+1,line.length());
          break;
        }
      }
    }
    catch (Exception e) {
      log.log(Level.SEVERE,e.toString());
      throw e;
    }finally{
      try{
        br.close();
      }catch(Exception ex){
        log.log(Level.SEVERE,ex.toString());
      }
    }
    return result;
  }
  /**
   * 读取多个记录
   * @param path  段落路径
   * @param name  获取的数据项的名称前缀
   * @return  数据项的值的数组 如果没有该数据项则为null
   * @throws Exception
   */
  public String[] getItems(String path,String name)throws Exception {
    String[] result = new String[256];
    int i = 0;
    String line = null;
    BufferedReader br = null;
    try {
      br = new BufferedReader(new FileReader(this.fileName));
      boolean pflag = false;
      while ((line = br.readLine()) != null) {
        line = line.trim();
        if (line.length() > 0 && line.substring(0,1).equals("[")) {
          if(pflag)
            pflag=false;
        }
        if (line.equalsIgnoreCase("[" +path+ "]")) {
          pflag = true ;
          continue;
        }
        if (pflag && line.length()>name.length() && name.equalsIgnoreCase(line.substring(0, name.length()))) {
          result[i++] = line.substring(line.indexOf("=")+1, line.length());
          continue;
        }
      }
    }
    catch (Exception ex) {
      log.log(Level.SEVERE,ex.toString());
      throw ex;
    }finally{
      try{
        br.close();
      }catch(Exception ex){
        log.log(Level.SEVERE,ex.toString());
      }
    }
    if(result == null || result.length==0)
      return null;
    //忽略result[]中剩余的为null的项
    if ( i > 1) {
      String[] tmp = new String[i];
      for (int j = 0; j < i; j++) {
        tmp[j] = result[j];
      }
      return tmp;
    }
    return null;
  }
  /**
   * 读取多个记录,并且将其用xhgStr联结起来,返回一个String
   * @param path  段落路径
   * @param name  获取的数据项的名称
   * @param connStr  连接符
   * @return 数据项的值,如果没有该数据项则为null
   * @throws Exception
   */
  public String getItemsConnection(String path,String name,String connStr)throws Exception
  {
    String[] items=getItems(path,name);
    StringBuffer result=new StringBuffer();
    if(items == null)
      return null;
    for(int i=0;i<items.length;i++){
      result.append(items[i]);
      if(i!=items.length-1)
        result.append(connStr);
    }
    return result.toString();
  }
  /**
   * 增加一个记录
   * @param path  段落路径
   * @param name  名称
   * @param value  值
   * @throws Exception
   */
  public void addItem(String path, String name, String value) throws Exception{
    boolean pflag = false;
    Vector line = new Vector();
    String sline = "";
    try {
      //将数据读到vector中
      BufferedReader br = null;
      br = new BufferedReader(new FileReader(this.fileName));
      while ((sline = br.readLine()) != null) {
        line.addElement(new String (sline.getBytes("GB2312")));
      }
      br.close();
      for (int i = 0 ; i < line.size(); i++) {
        sline = (String)line.elementAt(i);
        sline = sline.trim();
        if (sline.length() > 0){
          if (sline.startsWith("[")) {
            if (pflag && sline.startsWith("[")) {
              line.insertElementAt(name + "=" + value, i);
            }
            pflag = false;
          }
        }
        if (sline.equalsIgnoreCase("[" + path + "]")) {
          pflag = true ;
          continue;
        }
        if (pflag) {
            line.add(name + "=" + value);
            break;
          //if (pflag && name.equalsIgnoreCase(sline.substring(0, name.length()))) {
            //line.setElementAt(name + "=" + value, i);
            //break;
        }
      }
      FileOutputStream ost = new FileOutputStream(this.fileName);
      DataOutputStream ds = new DataOutputStream(ost);
      for (int i = 0; i < line.size(); i++) {
        ds.writeBytes(((String)(line.elementAt(i))).trim());
        ds.writeByte('\r');
        ds.writeByte('\n');
      }
      ds.flush();
      ds.close();
    }
    catch (Exception ex) {
      log.log(Level.SEVERE,ex.toString());
    }
  }
  /**
   * 删除一个记录
   * @param path  段落路径
   * @param name  名称
   * @param value  值
   * @throws Exception
   */
  public void deleteItem(String path, String name, String value) throws Exception{
    boolean pflag = false;
    Vector line = new Vector();
    String sline = "";
    try {
      //将数据读到vector中
      BufferedReader br = null;
      br = new BufferedReader(new FileReader(this.fileName));
      while ((sline = br.readLine()) != null) {
        line.addElement(new String (sline.getBytes("GB2312")));
      }
      br.close();

      for (int i = 0 ; i < line.size(); i++) {
        sline = (String)line.elementAt(i);
        sline = sline.trim();
        if (sline.length() > 0){
          if (sline.startsWith("[")) {
            if (pflag && sline.startsWith("[")) {
              line.insertElementAt(name + "=" + value, i);
            }
            pflag = false;
          }
        }
        if (sline.equalsIgnoreCase("[" + path + "]")) {
          pflag = true ;
          continue;
        }

        if (pflag && name.equalsIgnoreCase(sline.substring(0, name.length()))) {
           //line.setElementAt(name + "=" + value, i);
            //break;
        }
      }
      FileOutputStream ost = new FileOutputStream(this.fileName);
      DataOutputStream ds = new DataOutputStream(ost);
      for (int i = 0; i < line.size(); i++) {
        ds.writeBytes(((String)(line.elementAt(i))).trim());
        ds.writeByte('\r');
        ds.writeByte('\n');
      }
      ds.flush();
      ds.close();
    }
    catch (Exception ex) {
      log.log(Level.SEVERE,ex.toString());
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -