System.Net类
System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。 WebRequest 和 WebResponse 类形成了所谓的可插接式协议的基础,可插接式协议是网络服务的一种实现,它使您能够开发出使用 Internet 资源的应用程序,而不必考虑各种不同协议的具体细节。
第一节:Cookie类
提供一个与 HTTP 请求一起使用的对象,用于保存基于 Silverlight 的应用程序的状态信息。
第二节:CookieCollection类
表示 Cookie 对象的集合。
第三节:CookieException类
当将 Cookie 添加到 CookieCollection 时引发的异常。
第四节:CookieContainer类
为 CookieCollection 对象的集合提供容器。
第五节:WebRequest类
WebRequest类发出对统一资源标识符 (URI) 的请求。 这是一个 abstract 类。
第六节:WebResponse类
提供来自统一资源标识符 (URI) 的响应。 这是一个 abstract 类。
第七节:WebHeaderCollection类
包含与请求或响应关联的协议标头。
第八节:HttpRequestHeader 枚举
可以在客户端请求中指定的 HTTP 标头。
第九节:Stream 类(System.IO.Stream)
提供字节序列的一般视图。
第十节:WebClient类
提供用于将数据发送到由 URI 标识的资源及从这样的资源接收数据的常用方法。
参考
小项目:System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)
XMLDocument类
using System.Xml;//XmlDocument
简介
使用XmlDocument 实现读取和写入
XML 被设计用来传输和存储数据。
创建
using NI_XML;
using System;
namespace Base
{
internal class Program
{
public static string pathA = @"C:\SEET\";
static void Main(string[] args)
{
if (!Directory.Exists(pathA))
{
DirectoryInfo directoryInfo = new DirectoryInfo(pathA);
directoryInfo.Create(); //调用一遍就会给他覆写到 也就是重新从头写一遍
}
RWxml NIxml = new RWxml();
NIxml.CreateXml();
//NIxml.ReadXml();
}
}
}
using System.Xml;
namespace NI_XML
{
public class RWxml
{
string path = @"C:\SEET\test.xml";
///<summary>
///生成一个xml文档
/// </summary>
public void CreateXml()
{
//创建xml文档
//1、实例化一个XmlDocument
XmlDocument xDoc = new XmlDocument();
//版本必须是1.0
//创建一个声明xml所需要的语法的变量
XmlDeclaration xnode = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "");
//将指定的节点添加到该节点的子节点列表的末尾 这里也就是添加到了第一行
xDoc.AppendChild(xnode);//将xnode添加到xDoc中去
//一个xml文档必须要有一个根元素且只有一个 不然创建不了
XmlElement root = xDoc.CreateElement("school");
//把根节点添加到xml文档中去
xDoc.AppendChild(root);
//在根节点下面创建第一级子节点
XmlElement FirstNode1 = xDoc.CreateElement("教务处");
//把第一级子节点放到根节点后面
root.AppendChild(FirstNode1);
//再添加一个一级子节点
XmlElement FirstNode2 = xDoc.CreateElement("体育部");
root.AppendChild (FirstNode2);
//添加二级子节点
XmlElement SecNode1 = xDoc.CreateElement("一年级教务处");
FirstNode1.AppendChild(SecNode1);
XmlElement SecNode2 = xDoc.CreateElement("二年级教务处");
FirstNode1.AppendChild(SecNode2);
XmlElement SecNode3 = xDoc.CreateElement("三年级教务处");
FirstNode1.AppendChild(SecNode3);
XmlElement SecNode4 = xDoc.CreateElement("四年级教务处");
FirstNode1.AppendChild(SecNode4);
//添加属性
root.SetAttribute("校名","北京小学"); //根节点 学校
FirstNode1.SetAttribute("主任","王刚");//一级子节点 教务处
FirstNode2.SetAttribute("主任", "王明");
//增加二级字节点中的数据
SecNode1.InnerText = "10";
SecNode2.InnerText = "20";
SecNode3.InnerText = "30";
SecNode4.InnerText = "40";
xDoc.Save(this.path);//注意这个的save路径是需要加上 .xml的
}
///<summary>
/// 读取xml
/// </summary>
public void ReadXml()
{
//实例化一个xml操作对象
XmlDocument xDoc = new XmlDocument();
//加载 有两个 一个是从对应的位置加载xml文档 还有一个是从指定字符串中加载xml文档
//只有加载了以后才能操作
xDoc.Load(this.path);
//获取根节点 school
XmlNode rNode = xDoc.SelectSingleNode("school");//.SelectSingleNode:取到第一个和表达式匹配的节点
//取出来的节点 可以对其进行加 设置其属性 添加子节点
XmlNodeList rlist = rNode.ChildNodes; //获取节点的所有子节点
foreach(XmlNode r in rlist)
{
string name = r.Name;//获取节点的限定名称
Console.WriteLine("节点:"+name);
//取属性值 要先给他做一个类型转换
XmlElement attrb =(XmlElement)r;
string value=attrb.GetAttribute("主任");//取出主任这个属性值
Console.WriteLine("主任名:"+value);
Console.WriteLine("");
}
//获取教务处的子节点
XmlNodeList cnode = rlist[0].ChildNodes;
foreach (XmlNode c in cnode)
{
string name =c.Name;
string score = c.InnerText;
c.InnerText = "100";//这样就可以修改这里面的值了
xDoc.Save(path);//修改好了 记得保存 才会生效
Console.WriteLine("子节点名称:" + name+";里面的值:"+score);
}
}
}
}
读取
using NI_XML;
using System;
namespace Base
{
internal class Program
{
public static string pathA = @"C:\SEET\";
static void Main(string[] args)
{
if (!Directory.Exists(pathA))
{
DirectoryInfo directoryInfo = new DirectoryInfo(pathA);
directoryInfo.Create(); //调用一遍就会给他覆写到 也就是重新从头写一遍
}
RWxml NIxml = new RWxml();
NIxml.CreateXml();
NIxml.ReadXml();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NI_XML;
using System.Xml;
namespace NI_XML
{
public class RWxml
{
string path = @"C:\SEET\test.xml";
///<summary>
///生成一个xml文档
/// </summary>
public void CreateXml()
{
//创建xml文档
//1、实例化一个XmlDocument
XmlDocument xDoc = new XmlDocument();
//版本必须是1.0
//创建一个声明xml所需要的语法的变量
XmlDeclaration xnode = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "");
//将指定的节点添加到该节点的子节点列表的末尾 这里也就是添加到了第一行
xDoc.AppendChild(xnode);//将xnode添加到xDoc中去
//一个xml文档必须要有一个根元素且只有一个 不然创建不了
XmlElement root = xDoc.CreateElement("school");
//把根节点添加到xml文档中去
xDoc.AppendChild(root);
//在根节点下面创建第一级子节点
XmlElement FirstNode1 = xDoc.CreateElement("教务处");
//把第一级子节点放到根节点后面
root.AppendChild(FirstNode1);
//再添加一个一级子节点
XmlElement FirstNode2 = xDoc.CreateElement("体育部");
root.AppendChild (FirstNode2);
//添加二级子节点
XmlElement SecNode1 = xDoc.CreateElement("一年级教务处");
FirstNode1.AppendChild(SecNode1);
XmlElement SecNode2 = xDoc.CreateElement("二年级教务处");
FirstNode1.AppendChild(SecNode2);
XmlElement SecNode3 = xDoc.CreateElement("三年级教务处");
FirstNode1.AppendChild(SecNode3);
XmlElement SecNode4 = xDoc.CreateElement("四年级教务处");
FirstNode1.AppendChild(SecNode4);
//添加属性
root.SetAttribute("校名","北京小学"); //根节点 学校
FirstNode1.SetAttribute("主任","王刚");//一级子节点 教务处
FirstNode2.SetAttribute("主任", "王明");
//增加二级字节点中的数据
SecNode1.InnerText = "10";
SecNode2.InnerText = "20";
SecNode3.InnerText = "30";
SecNode4.InnerText = "40";
xDoc.Save(this.path);
}
///<summary>
/// 读取xml
/// </summary>
public void ReadXml()
{
//实例化一个xml操作对象
XmlDocument xDoc = new XmlDocument();
//加载 有两种 一种是从对应的位置加载xml文档 还有一种是从指定字符串中加载xml文档
//只有加载了以后才能操作
xDoc.Load(this.path);
//获取根节点 school
XmlNode rNode = xDoc.SelectSingleNode("school");//.SelectSingleNode:取到第一个和表达式匹配的节点
//取出来的节点 可以对其进行加 设置其属性 添加子节点
XmlNodeList rlist = rNode.ChildNodes; //获取根节点下的所有子节点
foreach(XmlNode r in rlist)
{
string name = r.Name;//获取节点的限定名称
Console.WriteLine("节点:"+name);
//取属性值 要先给他做一个类型转换
XmlElement attrb =(XmlElement)r;
string value=attrb.GetAttribute("主任");//取出主任这个属性值
Console.WriteLine("主任名:"+value);
Console.WriteLine("");
}
//获取教务处的子节点
XmlNodeList cnode = rlist[0].ChildNodes;
foreach (XmlNode c in cnode)
{
string name =c.Name;
string score = c.InnerText;
c.InnerText = "100";//这样就可以修改这里面的值了
xDoc.Save(path);//修改好了 记得保存 才会生效
Console.WriteLine("子节点名称:" + name+";里面的值:"+score);
}
}
}
}
删除xml中指定节点
/// <summary>
/// 删除指定名字的节点及其子节点
/// </summary>
/// <param name="name"></param>
/// <param name="root"></param>
static void DeleteNode(string name,XmlNode root)
{
foreach (XmlNode node in root)
{
if (node.Name.Equals(name))
{
node.RemoveAll();
}
else
{
DeleteNode(name,node);
}
}
xmlDoc.Save(FilePath);
}
序列化和反序列化XML
using System.Xml;
using System.Xml.Serialization;
using System.Windows.Forms;
创建写入的值
//创建列表
List<stdudent> students = new List<stdudent>();
public class stdudent
{
public int Age { get; set; } //prop 然后tab 就可以快速按出来了
public int Grade { get; set; }
public int ID { get; set; }
public string Name { get; set; }
}
public Form1()
{
InitializeComponent();
//初始化列表
students.Add(new stdudent() { Age=11,Grade=70,Name="王刚",ID=1});
students.Add(new stdudent() { Age = 21, Grade = 50, Name = "小工", ID = 2 });
students.Add(new stdudent() { Age = 31, Grade = 80, Name = "小红", ID = 3 });
students.Add(new stdudent() { Age = 42, Grade =100, Name = "刘德华", ID =4 });
}
写入
private void uiButton1_Click(object sender, EventArgs e)
{
XmlSerializer xml=new XmlSerializer(typeof(List<stdudent>));//XmlSerializer 类,它可以序列化的 XML 文档,将指定类型的对象反序列化 XML文档化为指定类型的对象。 using System.Xml.Serialization;
string path = Application.StartupPath;//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。 using System.Windows.Forms;
System.IO.Stream stream = new System.IO.FileStream(path+@"students.xml", System.IO.FileMode.OpenOrCreate);
//Stream stream:System.IO.Stream 用于写入 XML 文档。
//object o:要序列化的 System.Object。
xml.Serialize(stream,students);//将序列化为指定 System.Object ,并使用指定的文件中写入 XML 文档 System.IO.Stream。
//只有关闭了 才能执行下面的读取操作
stream.Close();//关闭流
stream.Dispose();//释放流占用的资源
}
读出
private void uiButton2_Click(object sender, EventArgs e)
{
XmlSerializer xml = new XmlSerializer(typeof(List<stdudent>));
string path = Application.StartupPath;
System.IO.Stream stream = new System.IO.FileStream(path + @"students.xml", System.IO.FileMode.OpenOrCreate);
var t =(List<stdudent>)xml.Deserialize(stream);
stream.Close();//关闭流
stream.Dispose();//释放流占用的资源
}
StreamWriter类
1、使用的命名空间是:System.IO;
2、用来将字符串写入文件。
using System.IO;
//初始化系统参数
string path = "C:\\SOFTSET\\test.txt";
if (Directory.Exists("C:\\SOFTSET") == false)//如果不存在就创建file文件夹
{
Directory.CreateDirectory("C:\\SOFTSET");
}
//判断有没有存在这个文件
if (System.IO.File.Exists(path))
{
Console.WriteLine("有soft文件");
}
/*
WriteLine():写入文件,并且换行。
Write():多种重写方式,具体可以查VS文档。
Dispose():释放由 System.IO.StreamWriter 占用的非托管资源,还可以另外再释放托管资源。
Flush():清理当前写入器的所有缓冲区,并使所有缓冲数据写入基础流。
Close():关闭流。
*/
//StreamWriter sr = new StreamWriter(path,true); // true:追加这写 false:覆写,默认参数就是覆写
StreamWriter sr = new StreamWriter(path);//这样就是覆写
sr.WriteLine("第一句话");
sr.Flush(); // 清空缓存 将缓存中的数据写入进去
sr.Write("华为手机");
sr.Close(); // 关闭文件
System.Threading
简单说就是System.Threading.Thread是一个创建和管理线程的类。
详解
Convert类
详解
C# Convert 方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值转换成任意数据类型,前提是不要超出指定数据类型的范围。