Reinventing the wheel 系列

CSharp 读取配置文件的类 简单实现(注意没有写)

本人对CS 不是很熟,库也不熟,所以到网上找个实现,并自己添加了点异常。如果只是读取信息,足够了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Windows.Forms;
using System.IO;//StringReader namespace CSharpTest
{
//Properties属性文件操作类
/// <summary>
/// 属性文件读取操作类
/// </summary>
public class PropertyFileOperator
{
private StreamReader sr = null; private Boolean bIsInit = false; /// 构造函数
/// <param name="strFilePath">文件路径</param>
public PropertyFileOperator(string strFilePath)
{
try
{
sr = new StreamReader(strFilePath);
}
catch (Exception e)//can not find , exception
{
bIsInit = false;
MessageBox.Show(e.Message,"ERROR:failed to read Property File 读取配置文件失败");
return;
}
bIsInit = true;
} public Boolean IsInit()
{
return bIsInit;
} /// 关闭文件流
public void Close()
{
sr.Close();
sr = null;
} /// 根据键获得值字符串 /// <param name="strKey">键</param>
/// <returns>值</returns>
public string GetPropertiesText(string strKey)
{
string strResult = string.Empty;
string str = string.Empty;
sr.BaseStream.Seek(0, SeekOrigin.End);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
while ((str = sr.ReadLine()) != null)
{
//int index = str.IndexOf('#');
//bool ret = str.Substring(0, index).Equals("#"); //int len = str.Length; //len==0
if (str.IndexOf('#') == 0 || str.CompareTo("") == 0)//comment
continue; if (str.IndexOf('=') >= 0)
{
if (str.Substring(0, str.IndexOf('=')).Equals(strKey))
{
strResult = str.Substring(str.IndexOf('=') + 1);
if (strResult.IndexOf('#') >= 0)
{
strResult = strResult.Substring(0, strResult.IndexOf('#'));
} break;
} }
else if (str.IndexOf(':') >= 0)
{
if (str.Substring(0, str.IndexOf(':')).Equals(strKey))
{
strResult = str.Substring(str.IndexOf(':') + 1);
if (strResult.IndexOf('#') >= 0)
{
strResult = strResult.Substring(0, strResult.IndexOf('#'));
}
break;
} } }
return strResult;
} /// 根据键获得值数组
/// <param name="strKey">键</param>
/// <returns>值数组</returns>
public string[] GetPropertiesArray(string strKey)
{
string strResult = string.Empty;
string str = string.Empty;
sr.BaseStream.Seek(0, SeekOrigin.End);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
while ((str = sr.ReadLine()) != null)
{
if (str.Substring(0, str.IndexOf('=')).Equals(strKey))
{
strResult = str.Substring(str.IndexOf('=') + 1);
break;
}
}
return strResult.Split(',');
}
} }

CSharp读取配置文件的类(简单实现)的更多相关文章

  1. Asp.NetCore 读取配置文件帮助类

    /// <summary> /// 读取配置文件信息 /// </summary> public class ConfigExtensions { public static ...

  2. spring读取配置文件PropertyPlaceholderConfigurer类的使用

    这里主要介绍PropertyPlaceholderConfigurer这个类的使用,spring中的该类主要用来读取配置文件并将配置文件中的变量设置到上下文环境中,并进行赋值. 一.此处使用list标 ...

  3. PropertiesUtil 读取配置文件工具类

    package org.konghao.basic.util; import java.io.FileInputStream; import java.io.FileNotFoundException ...

  4. ConfigUtil读取配置文件工具类

    ConfigUtil package com.sso.util; import java.io.FileNotFoundException; import java.io.IOException; i ...

  5. java读取配置文件方法以及工具类

    第一种方式 : java工具类读取配置文件工具类 只是案例代码  抓取异常以后的代码自己处理 import java.io.FileNotFoundException; import java.io. ...

  6. python读取配置文件&&简单封装

    之前有做过把爬虫数据写到数据库中的练习,这次想把数据库信息抽离到一个ini配置文件中,这样做的好处在于可以在配置文件中添加多个数据库,方便切换(另外配置文件也可以添加诸如邮箱.url等信息) 1.co ...

  7. Asp.net Core 和类库读取配置文件信息

    Asp.net Core 和类库读取配置文件信息 看干货请移步至.net core 读取配置文件公共类 首先开一个脑洞,Asp.net core 被使用这么长时间了,但是关于配置文件(json)的读取 ...

  8. 使用Properties去读取配置文件,并获得具体内容值

    有时候,写了一个配置文件,需要知道读出来的内容对不对,我们需要测试一下,看看读出来的跟我们要的是不是一样.这里写了一个工具类,用来读取配置文件里面的内容. 一.使用Properties工具类来读取. ...

  9. SpringBoot 读取配置文件的值 赋给静态变量

    需求:写了一个工具类,但是工具类中的一些变量需要放到配置文件中,而这个工具类中的变量与方法都是静态的,这个时候我需要一个办法将配置文件中的相关配置读取过来赋值给这些静态变量.找了一些文章,试了一些方法 ...

随机推荐

  1. centOS中修改语言环境

    在终端中打开 键入 vim ~/.bashrc 在最后一行键入 export LANG="zh_CH.UTF-8"

  2. uget + aria2

    @.Ubuntu 16.04下安装 原文:http://blog.csdn.net/xiaohouye/article/details/54603198 安装完成后可在终端输入:uget-gtk打开u ...

  3. 查询SQL2008字段和注释

    SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = ...

  4. [ACM] HDU 1533 Going Home (二分图最小权匹配,KM算法)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  5. Android中的android:layout_width和android:width

    最近在看android的东西,发现很多和web前台的东西一样(思想).只是看到很多属性的写法和前台有差别,刚刚看到这样的属性: android:width 其实是定义控件上面的文本(TextView) ...

  6. Docker基础原理

    前言 Docker是一个开源的软件项目,让用户程序部署在一个相对隔离的环境运行,借此在Linux操作系统上提供一层额外的抽象,以及操作系统层虚拟化的自动管理机制.需要额外指出的是,Docker并不等于 ...

  7. Hadoop实战-Flume之Sink Load-balancing(十七)

    a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type ...

  8. python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收

    代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A:     def spam(self,x) ...

  9. git 从远端拉取指定分支和推送本地某个分支到远端

    如题,可以直接从远端拉取某个分支,也可以直接将本地某个分支推送到远端. 原文链接:https://www.cnblogs.com/hamsterPP/p/6810831.html

  10. IOS AFNetWorking 设置超时时间

    (原创经验总结) 1.关于AF 超时的说法 系统默认的timeInterval  是60s  ASI默认是10s 但是有一个说法是 AF “AFN在GET条件下设置的NSURLRequest能起作用, ...