/// <summary>
/// 不调用系统API 读写 ini 配置文件
/// </summary>
public class RW_ini
{
#region ========ini 读写========
// 首次调用 RWini 时需要初始化此参数
public static string pathIni;
// 记录错误信息 与 WriteLog 一起使用
public static string pathErr; public static string ReadIni(string section, string key)
{
string result = "";
try
{
// 文件存在
if (File.Exists(pathIni))
{
//读取INI文件
string buffer;
string[] temp;
using (StreamReader sr = new StreamReader(pathIni, Encoding.Default))
{
while (sr.Peek() >= )
{
buffer = sr.ReadLine().Trim();
if (!string.IsNullOrEmpty(buffer) && buffer.StartsWith(string.Format("[{0}]", section), StringComparison.OrdinalIgnoreCase))
{
while (sr.Peek() > )
{
buffer = sr.ReadLine().Trim();
if (!string.IsNullOrEmpty(buffer))
{
if (buffer.StartsWith("["))
break;
if (!buffer.StartsWith(";"))
{
temp = buffer.Split('=');
if (temp.Length > && temp[].TrimEnd().Equals(key, StringComparison.OrdinalIgnoreCase))
{
return temp[].TrimStart();
}
}
}
}
// 不再判断下一个节点
return result;
}
}
}
}
// 不再判断下一个节点
return result;
}
catch
{
throw new ApplicationException("同步文件读取异常!");
}
} private void WriteIni(string section, string key, string value)
{
try
{
// 文件不存在则创建
if (!File.Exists(pathIni))
{
File.Create(pathIni);
}
// 修改INI文件
bool modify = false, find = false;
string buffer;
List<string> temp = new List<string>();
// 将所有配置文件放到集合中
using (StreamReader sr = new StreamReader(pathIni, Encoding.Default))
{
while (sr.Peek() >= )
{
buffer = sr.ReadLine().Trim();
temp.Add(buffer); if (!modify && !string.IsNullOrEmpty(buffer) && buffer.StartsWith(string.Format("[{0}]", section), StringComparison.OrdinalIgnoreCase))
{
find = true;
while (sr.Peek() >= )
{
buffer = sr.ReadLine().Trim();
temp.Add(buffer);
if (!string.IsNullOrEmpty(buffer))
{
if (buffer.StartsWith("["))
break;
if (!modify && !buffer.StartsWith(";") && buffer.Split('=')[].TrimEnd() == key)
{
modify = true;
temp.RemoveAt(temp.Count - );
if (value != null)
{
temp.Add(string.Format("{0} = {1}", key, value));
}
}
}
} if (!modify)
{
temp.Insert(temp.Count - , string.Format("{0} = {1}", key, value));
}
}
}
if (!modify && !find)
{
temp.Add(string.Format("[{0}]", section));
temp.Add(string.Format("{0} = {1}", key, value));
}
}
using (StreamWriter sw = new StreamWriter(pathIni, false, Encoding.Default))
{
foreach (string item in temp)
sw.WriteLine(item);
}
}
catch
{
throw new ApplicationException("同步文件写入异常!");
}
} public static void WriteLog(string content)
{
File.AppendText(pathErr).WriteLine("时间:{0} 信息:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm"), content);
}
}

因为 WinCE 不带读写 ini 的API 而且自己用的配置文件节点并不多

因此自己编写此类 用于 WinCE 系统中。C# 代码

自己写的 读写 ini 配置文件类的更多相关文章

  1. 引用“kernel32”读写ini配置文件

    引用"kernel32"读写ini配置文件 unity ini kernel32 配置文件  引用"kernel32"读写ini配置文件 OverView ke ...

  2. C# 文件的一些基本操作(转)//用C#读写ini配置文件

    C# 文件的一些基本操作 2009-07-19  来自:博客园  字体大小:[大 中 小] 摘要:介绍C#对文件的一些基本操作,读写等. using System;using System.IO;us ...

  3. 使用C#读写ini配置文件

    INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数. INI文件其实并不是普通的文本文件.它有自己的结构.由若 ...

  4. C# 读写 ini 配置文件

    虽说 XML 文件越发流行,但精简的 ini 配置文件还是经常会用到,在此留个脚印. 当然,文中只是调用系统API,不会报错,如有必要,也可以直接以流形式读取 ini文件并解析. /// <su ...

  5. C#操作读写INI配置文件

    一个完整的INI文件格式由节(section).键(key).值(value)组成.示例如:[section]key1=value1key2=value2; 备注:value的值不要太长,理论上最多不 ...

  6. [转]VB 读写ini 配置文件

    转自 百度知道 C# 读写 ini配置文件 点此链接 'API 声明Public Declare Function GetPrivateProfileString Lib "kernel32 ...

  7. C# 读取Ini配置文件类

    配置文件 为fileName.ini 的文件 第一行必须为空,不然读不出值 [section1] key=value key2=value ......... [section2] key=value ...

  8. C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()

    转载: 1.https://blog.csdn.net/fengbingchun/article/details/6075716 2. 转自:http://hi.baidu.com/andywangc ...

  9. QT读写ini配置文件

        /********下面是写ini文件*************************/     //Qt中使用QSettings类读写ini文件     //QSettings构造函数的第一 ...

随机推荐

  1. 用redis做简单的任务队列(二)

    是用redis做任务队列时,要思考: 用什么数据类型来做任务队列 怎样才能防止重复爬取 上一篇文章已经决定使用list来做任务队列,但是去重问题没有得到解决.这里可以用set来解决思考二的问题,就是防 ...

  2. vue-compile概述

    来源 刘涛 Vue的核心可以分为三个大块:数据处理和双向绑定.模板编译.虚拟dom. 前面我们对第一部分的主要内容双向绑定做了一个分析讲解,接下来我们说一说模板编译. 这一部分的内容比较多,也比较复杂 ...

  3. mysql sum(if())用法

    原表:id    fenlei     time1      分类1      201303162      分类2      201303163      分类3      201303174    ...

  4. define 常量的定义和读取

    define(‘常量’,‘常量值’)----------------------define来定义常量, echo 也能输出常量, get_defined_constants(true)------- ...

  5. Java性能优化之JVM GC(垃圾回收机制)

    Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.st ...

  6. pycharm中tensorflow代码不能自动补全或import红线问题解决

    正确安装并配置好pycharm+tensorflow环境之后,可能在pycharm中导入tensorflow会有以下问题: 1. " import tensorflow as tf &quo ...

  7. magento增加左侧导航栏

    1.打开 app\design\frontend\default\modern\layout\catalog.xml,在适当位置加入以下代码: <reference name=”left”> ...

  8. IISExpress 开放局域网访问

    1. 设置 IISExpress 配置文件 applicationhost.config VS2015 :这个配置文件 在工程目录下的 .vs/config 隐藏目录 其他版本 :在用户目录中的 II ...

  9. JPA 简单实体映射和EntityManagerAPI

    [常用注解] 使用JPA 指定映射关系时,有两种方式,一种是使用xml 方式,另一种是注解方式,笔者推荐使用注解方式.在JPA 映射简单实体时,常用的注解如下: @Entity:修饰实体类对象,表示该 ...

  10. 迭代器Iterator的底层实现原理

    第一步:没有接口的迭代器简单实现原理 package com.bjsxt.xiaofei; /** * 迭代器底层原理 * 方法: * hasNext() * next() * remove() * ...