zoukankan      html  css  js  c++  java
  • c#读properties文件

    @(编程)

    properties文件

    MONGO_URL = mongodb://172.16.20.3/srtc_dc
    CURRENT_VERSION = 2.0
    IS_AUTO_UPDATE = no
    REMOTE_UPDATE_FILE = http://192.168.1.121:8080/ClientBin.zip
    REMOTE_VERSION_FILE = http://192.168.1.121:8080/version
    PROGRAM_PATH = E:dcClientBinWims.Mili.DC.Client.SYS.exe
    

    源码

    using System;
    using System.Collections;
    using System.IO;
    
    namespace Wisdombud.Util
    {
        public class PropertyOper : System.Collections.Hashtable
        {
            private string fileName = "";
            private ArrayList list = new ArrayList();
            public ArrayList List
            {
                get { return list; }
                set { list = value; }
            }
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="fileName">要读写的properties文件名</param>
            public PropertyOper(string fileName)
            {
                this.fileName = fileName;
                this.Load(fileName);
            }
            /// <summary>
            /// 重写父类的方法
            /// </summary>
            /// <param name="key">键</param>
            /// <param name="value">值</param>
            public override void Add(object key, object value)
            {
                base.Add(key, value);
                list.Add(key);
    
            }
    
            public void Update(object key, object value)
            {
                base.Remove(key);
                list.Remove(key);
                this.Add(key, value);
    
            }
            public override ICollection Keys
            {
                get
                {
                    return list;
                }
            }
            /// <summary>
            /// 加载文件
            /// </summary>
            /// <param name="filePath">文件路径</param>
            private void Load(string filePath)
            {
                char[] convertBuf = new char[1024];
                int limit;
                int keyLen;
                int valueStart;
                char c;
                string bufLine = string.Empty;
                bool hasSep;
                bool precedingBackslash;
                using (StreamReader sr = new StreamReader(filePath))
                {
                    while (sr.Peek() >= 0)
                    {
                        bufLine = sr.ReadLine();
                        limit = bufLine.Length;
                        keyLen = 0;
                        valueStart = limit;
                        hasSep = false;
                        precedingBackslash = false;
                        if (bufLine.StartsWith("#"))
                            keyLen = bufLine.Length;
                        while (keyLen < limit)
                        {
                            c = bufLine[keyLen];
                            if ((c == '=' || c == ':') & !precedingBackslash)
                            {
                                valueStart = keyLen + 1;
                                hasSep = true;
                                break;
                            }
                            else if ((c == ' ' || c == '	' || c == 'f') & !precedingBackslash)
                            {
                                valueStart = keyLen + 1;
                                break;
                            }
                            if (c == '\')
                            {
                                precedingBackslash = !precedingBackslash;
                            }
                            else
                            {
                                precedingBackslash = false;
                            }
                            keyLen++;
                        }
                        while (valueStart < limit)
                        {
                            c = bufLine[valueStart];
                            if (c != ' ' && c != '	' && c != 'f')
                            {
                                if (!hasSep && (c == '=' || c == ':'))
                                {
                                    hasSep = true;
                                }
                                else
                                {
                                    break;
                                }
                            }
                            valueStart++;
                        }
                        string key = bufLine.Substring(0, keyLen);
                        string values = bufLine.Substring(valueStart, limit - valueStart);
                        if (key == "")
                            key += "#";
                        while (key.StartsWith("#") & this.Contains(key))
                        {
                            key += "#";
                        }
                        this.Add(key, values);
                    }
                }
            }
            /// <summary>
            /// 保存文件
            /// </summary>
            /// <param name="filePath">要保存的文件的路径</param>
            public void Save()
            {
                string filePath = this.fileName;
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
                FileStream fileStream = File.Create(filePath);
                StreamWriter sw = new StreamWriter(fileStream);
                foreach (object item in list)
                {
                    String key = (String)item;
                    String val = (String)this[key];
                    if (key.StartsWith("#"))
                    {
                        if (val == "")
                        {
                            sw.WriteLine(key);
                        }
                        else
                        {
                            sw.WriteLine(val);
                        }
                    }
                    else
                    {
                        sw.WriteLine(key + "=" + val);
                    }
                }
                sw.Close();
                fileStream.Close();
            }
        }
    }
    
    

    应用

            public static void ReadConfig()
            {
                PropertyOper po = new PropertyOper("update.properties");
                GlobalValues.MONGO_URL = po["MONGO_URL"].ToString();
                GlobalValues.IS_AUTO_UPDATE = po["IS_AUTO_UPDATE"].ToString().ToLower().Equals("yes") ? true : false;
                GlobalValues.REMOTE_UPDATE_FILE = po["REMOTE_UPDATE_FILE"].ToString();
                GlobalValues.REMOTE_VERSION_FILE = po["REMOTE_VERSION_FILE"].ToString();
    
                GlobalValues.PROGRAM_PATH = po["PROGRAM_PATH"].ToString();
                FileInfo fi = new FileInfo(GlobalValues.PROGRAM_PATH);
                GlobalValues.PROGRAM_FOLDER = fi.Directory.FullName;
                GlobalValues.PROGRAM_NAME = fi.Name.Replace(".exe", "");
                GlobalValues.CURRETN_VERSION = po["CURRENT_VERSION"].ToString();
                GetIP();
                DaoFactory.Init();
            }
    
  • 相关阅读:
    Compression algorithm (deflate)
    tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    gzip压缩算法: gzip 所使用压缩算法的基本原理
    Decompressing a GZip Stream with Zlib
    Frequently Asked Questions about zlib
    how to decompress gzip stream with zlib
    自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    C语言抓http gzip包并解压 失败 C/C++ ChinaUnix.net
  • 原文地址:https://www.cnblogs.com/wardensky/p/5331851.html
Copyright © 2011-2022 走看看