1.Ini是什么?(我对它的理解,用于存储用户配置信息的文件,该文件放在用户电脑...)
INI文件是一个无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常常使用在Windows操作系统,或是其他操作系统上,许多程序也会采用INI文件做为设置程序之用。Windows操作系统后来以注册表的形式取代掉INI档。INI文件的命名来源,是取自英文“初始(Initial)”的首字缩写,正与它的用途——初始化程序相应。有时候,INI文件也会以不同的扩展名,如“.CFG”、“.CONF”、或是“.TXT”代替。
ps:
注释使用分號表示(;)。在分號後面的文字,直到該行結尾都全部為註解。
      /// <summary>
/// INI文件读取类
/// </summary>
public class INIHelper
{
/// <summary>
/// 文件名
/// </summary>
public static string str = "setting.ini";
/// <summary>
/// 文件路径
/// </summary>
public static string path = System.AppDomain.CurrentDomain.BaseDirectory + str; [DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); [DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath); /// <summary>
/// 写INI文件
/// </summary>
/// <param name="Section">节点名称</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public static void IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, path);
} /// <summary>
/// 读取INI文件
/// </summary>
/// <param name="Section">节点名称</param>
/// <param name="Key">键</param>
/// <param name="path">文件路径</param>
/// <returns></returns>
public static string IniReadValue(string Section, string Key, string path)
{
StringBuilder temp = new StringBuilder();
int i = GetPrivateProfileString(Section, Key, "", temp, , path);
return temp.ToString();
} /// <summary>
/// 读取INI文件
/// </summary>
/// <param name="section">节点名称</param>
/// <param name="key">键</param>
/// <returns></returns>
public static byte[] IniReadValues(string section, string key)
{
byte[] temp = new byte[];
int i = GetPrivateProfileString(section, key, "", temp, , path);
return temp; }
/// <summary>
/// 删除ini文件下所有节点
/// </summary>
public static void ClearAllSection()
{
IniWriteValue(null, null, null);
}
/// <summary>
/// 删除ini文件指点节点下的所有键
/// </summary>
/// <param name="Section"></param>
public static void ClearSection(string Section)
{
IniWriteValue(Section, null, null);
}
}
2.Json是什么?
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
目前,接触比较多都是Newtonsoft.Json,它封装的很齐全,记忆比较深刻的是,它用通过字段的属性,来确定字段是否被序列化以及null不序列化等功能,用来支撑变化多端的需求。
参考:Newtonsoft https://www.newtonsoft.com/json
  /// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T DeserializeObject<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
/// <summary>
/// 序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static string DeserializeObject<T>(object obj)
{
JsonConvert.SerializeObject(obj);
}
3.Xml是什么?(更接近人类的语言)
In computing, Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. The W3C's XML 1.0 Specification[2] and several other related specifications[3]—all of them free open standards—define XML.[4]
The design goals of XML emphasize simplicity, generality, and usability across the Internet.[5] It is a textual data format with strong support via Unicode for different human languages. Although the design of XML focuses on documents, the language is widely used for the representation of arbitrary data structures[6] such as those used in web services.
Several schema systems exist to aid in the definition of XML-based languages, while programmers have developed many application programming interfaces (APIs) to aid the processing of XML data.
 public class AppConfigXmlHelper
{
public static string AppConfig()
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config");
string strDirectoryPath = Environment.CurrentDirectory + "\\IniJsonXmlTest.EXE.config";
return strDirectoryPath;
}
public static string GetPath(string key)
{
XmlDocument xDoc = new XmlDocument();
try
{
xDoc.Load(AppConfig());
XmlNode xNode;
XmlElement xElem;
xNode = xDoc.SelectSingleNode("//appSettings");    //补充,需要在你的app.config 文件中增加一下,<appSetting> </appSetting>
xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + key + "']");
if (xElem != null)
return xElem.GetAttribute("value");
else
return "";
}
catch (Exception)
{
return "";
}
}
public static void SetPath(string key, string path)
{
XmlElement xElem;
XmlDocument doc = new XmlDocument();
doc.Load(AppConfig());
XmlNode node = doc.SelectSingleNode(@"//appSettings");
xElem = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");
xElem.SetAttribute("value", path);
doc.Save(AppConfig());
}
}
public class XmlSerialization
{ public static System.IO.Stream Serialize(object obj, Encoding encode, System.IO.Stream s)
{
TextWriter writer = null;
writer = new StreamWriter(s, encode); XmlSerializer ser = new XmlSerializer(obj.GetType()); ser.Serialize(writer, obj);
return s; } public static MemoryStream Serialize(object obj, Encoding encode)
{
MemoryStream s = new MemoryStream();
Serialize(obj, encode, s);
s.Position = ;
return s;
} public static MemoryStream Serialize(object obj, String encode)
{
return Serialize(obj, Encoding.GetEncoding(encode));
} public static MemoryStream Serialize(object obj)
{
return Serialize(obj, Encoding.UTF8);
} public static object Deserialize(System.IO.Stream In, Type objType)
{
In.Position = ;
XmlSerializer ser = new XmlSerializer(objType);
return ser.Deserialize(In);
}
} public class XmlSerialization<T>
{
public static System.IO.Stream Serialize(T obj, Encoding encode, System.IO.Stream s)
{
TextWriter writer = null;
writer = new StreamWriter(s, encode); XmlSerializer ser = new XmlSerializer(typeof(T)); ser.Serialize(writer, obj);
return s;
} public static MemoryStream Serialize(T obj, Encoding encode)
{
MemoryStream s = new MemoryStream();
Serialize(obj, encode, s);
s.Position = ;
return s;
} public static MemoryStream Serialize(T obj, String encode)
{
return Serialize(obj, Encoding.GetEncoding(encode));
} public static MemoryStream Serialize(T obj)
{
return Serialize(obj, Encoding.UTF8);
} public static T Deserialize(System.IO.Stream In)
{
In.Position = ;
XmlSerializer ser = new XmlSerializer(typeof(T));
return (T)ser.Deserialize(In);
}
}
4.序列化与反序列化
  • 序列化: 将数据结构或对象转换成二进制串的过程。
  • 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Web.Script.Serialization;
using System.Xml.Serialization;
    public static class Serializer
{ #region 二进制
/// <summary>
/// 序列化二进制文件
/// </summary>
/// <param name="path"></param>
/// <param name="data"></param>
public static void SaveBinary(string path, object data)
{
if (File.Exists(path))
{
File.Delete(path);
}
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = File.Create(path);
bf.Serialize(fs, data);
fs.Close();
} /// <summary>
/// 反序列化二进制文件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="path"></param>
/// <returns></returns>
public static T LoadBinary<T>(string path)
{
if (!File.Exists(path))
{
return default(T);
}
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = File.OpenRead(path);
object data = bf.Deserialize(fs);
fs.Close();
return (T)data;
}
#endregion #region xml
/// <summary>
/// 序列化XML文件
/// </summary>
/// <param name="path"></param>
/// <param name="data"></param>
/// <param name="type"></param>
public static void SaveXml(string path, object data, Type type)
{
if (File.Exists(path))
{
File.Delete(path);
}
XmlSerializer xs = new XmlSerializer(type);
FileStream fs = File.Create(path);
xs.Serialize(fs, data);
fs.Close();
} /// <summary>
/// 反序列化XML文件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="path"></param>
/// <param name="type"></param>
/// <returns></returns>
public static T LoadXml<T>(string path, Type type)
{
if (!File.Exists(path))
{
return default(T);
}
XmlSerializer xs = new XmlSerializer(type);
FileStream fs = File.OpenRead(path);
object data = xs.Deserialize(fs);
fs.Close();
return (T)data;
}
#endregion #region json
/// <summary>
/// 序列化JSON
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
public static string Serialize(object data)
{
JavaScriptSerializer json = new JavaScriptSerializer();
json.MaxJsonLength = Int32.MaxValue;
return json.Serialize(data);
} /// <summary>
/// 反序列化JSON
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T Deserialize<T>(string json)
{
JavaScriptSerializer js = new JavaScriptSerializer();
js.MaxJsonLength = Int32.MaxValue;
return js.Deserialize<T>(json);
}
#endregion }
参考:

C# Ini、Json、Xml 封装类的更多相关文章

  1. c#通用配置文件读写类(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  2. c#通用配置文件读写类与格式转换(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  3. Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...

  4. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  5. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  6. JSON&XML总结

    JSON&XML: JSON----- //英译 Serialization:序列化 perform:执行 segue:继续 IOS5后 NSJSONSerialization解析 解析JSO ...

  7. JSON/XML序列化与反序列化(非构造自定义类)

    隔了很长时间再重看自己的代码,觉得好陌生..以后要养成多注释的好习惯..直接贴代码..对不起( ▼-▼ ) 保存保存:进行序列化后存入应用设置里 ApplicationDataContainer _a ...

  8. php返回json,xml,JSONP等格式的数据

    php返回json,xml,JSONP等格式的数据 返回json数据: header('Content-Type:application/json; charset=utf-8'); $arr = a ...

  9. Atitit.json xml 序列化循环引用解决方案json

    Atitit.json xml 序列化循环引用解决方案json 1. 循环引用1 2. 序列化循环引用解决方法1 2.1. 自定义序列化器1 2.2. 排除策略1 2.3. 设置序列化层次,一般3级别 ...

  10. 【转】[WCF REST] 帮助页面与自动消息格式(JSON/XML)选择

    可以说WebHttpBinding和WebHttpBehavior是整个Web HTTP编程模型最为核心的两个类型,前者主要解决消息编码问题,而余下的工作基本上落在了终结点行为WebHttpBehav ...

随机推荐

  1. 深深感受 Promise.all 带来的速度提升

    什么是Promise Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.(摘抄自 阮一峰老师的 ECMAScript 6 入门).具体请查看阮一峰老师的这 ...

  2. 一些重要的k8s概念

    1. Pause容器是什么 作为init pod存在,其他pod都会从pause 容器中fork出来 由pause容器管理 pause容器的工作 可知kubernetes的pod抽象基于Linux的n ...

  3. Sed练习

    sed:编辑器 sed:Stream EDitor,行编辑器 用法:        sed [opthon]... ‘script’ inputfile.. scritp:‘地址命令’ 常用选项:   ...

  4. EasyUI 中 Combobox里的onChange和onSelect事件的区别

    EasyUI 中 Combobox 选项发生改变时会触发 onChange,onSelect,onClick 3 个事件. 最近要做一个级联的 Combo 菜单,类似于选择地址时让用户填写省,市,区的 ...

  5. java final static

    final: 修饰类:类不能被继承 修饰方法:方法不能被重写 修饰变量:不能修改变量的指向,且只能赋值一次 全局变量是有默认值的,所以如果用final修饰全局变量,能在定义的同时赋值,或在构造函数中赋 ...

  6. Spring Boot:如何优雅的使用 Mybatis

    mybatis-spring-boot-starter 官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring B ...

  7. springboot秒杀课程学习整理1-1

    1)新建一个maven工程quickStart,然后在pom文件里添加依赖 <parent> <groupId>org.springframework.boot</gro ...

  8. UVa LA 4636 Cubist Artwork 难度: 0

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  9. 8款非常不错的.Net反编译利器

    本人搜集了下8款非常不错的.Net反编译利器: 1.Reflector Reflector是最为流行的.Net反编译工具.Reflector是由微软员工Lutz Roeder编写的免费程序.Refle ...

  10. Delphi下的WinSock编程

    一.定址        要通过Winsock建立通信,必须了解如何利用指定的协议为工作站定址.Winsock 2引入了几个新的.与协议无关的函数,它们可和任何一个地址家族一起使用:但是大多数情况下,各 ...