一、如何读写文件
1、创建一个文件流
2、创建阅读器或者写入器
3、执行读写操作
4、关闭阅读器或者写入器
5、关闭文件流
示例:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace TextReader { public partial class TextReader : Form { public TextReader() { InitializeComponent(); } private void btnWrite_Click(object sender, EventArgs e) { string path = txtFilePath.Text; string content = txtContent.Text; if (String.IsNullOrEmpty(path) == true) { MessageBox.Show("文件路径不能为空"); return; } try { //创建文件流 FileStream myFs = new FileStream(path, FileMode.CreateNew); //创建写入器 StreamWriter mySw = new StreamWriter(myFs); //将录入的内容写入文件 mySw.Write(content); //关闭写入器 mySw.Close(); //关闭文件流 myFs.Close(); ////直接写入方式 //StreamWriter mySw = new StreamWriter(path); //mySw.Write(content); //mySw.Close(); MessageBox.Show("写入成功"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } private void btnRead_Click(object sender, EventArgs e) { string path = txtFilePath.Text; string content; if (String.IsNullOrEmpty(path) == true) { MessageBox.Show("文件路径不能为空"); return; } try { //创建文件流 FileStream myfs = new FileStream(path, FileMode.Open); //创建读取器 StreamReader mySr = new StreamReader(myfs); //读取文件所有内容 content = mySr.ReadToEnd(); txtContent.Text = content; //关闭读取器 mySr.Close(); //关闭文件流 myfs.Close(); ////直接读取方式 //StreamReader mySr = new StreamReader(path); //content = mySr.ReadToEnd(); //txtContent.Text = content; //mySr.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } }
文件流:
Create用指定的名称新建一个文件
CreateNew新建一个文件
Open打开一个文件
OpenOrCreate如果文件不存在,则用指定的名称新建一个文件并打开它
FileMode属于枚举型
注意:读取文件数据时,其FileMode应该设置为FileMode.Open
二、File类的方法:
Exists(string path)用于检查指定文件是否存在,该方法返回一个布尔值
Copy(string SourceFilePath,string DestinationFilePath)
Move(string sourceFileName,string destFileName)
Delete(string path)
三、Directory类的方法:
Exists(string path)
Move(string sourceDirName,string destDirName)
Delete(string,bool)
四、XML的解析:
操作XML的对象属性和方法
1、XmlDocument对象:DocumentElement属性 获取根节点
ChildNodes属性 获取所有子节点
Load()方法 读取整个XML的结构
2、XmlNode对象:InnerText属性 当前节点的值
Name属性 当前节点的名字
ChildNodes属性 当前节点的所有子节点
示例:
对于下面的XML文件“temp.rss” ,XML文件的结构如下
<?xml version="1.0" encoding="gb2312"?><rss version="2.0"> <channel> <title>百度港澳焦点新闻</title> <image> <title>news.baidu.com</title> <link>http://news.baidu.com</link> <url>http://img.baidu.com/img/logo-news.gif</url> </image> <description></description> <link>http://news.baidu.com</link> <language>zh-cn</language> <docs></docs> <generator>www.baidu.com</generator> <ttl>5</ttl> <item> <title><![CDATA[香港警方:韩国MERS患者2名紧密接触者拒接受隔离]]></title> <link><![CDATA[http://news.qtv.com.cn/system/2015/05/30/012428017.shtml]]></link> <pubDate><![CDATA[2015-05-30T09:07:03.000Z]]></pubDate> <source><![CDATA[青岛网络电视台]]></source> <author><![CDATA[青岛网络电视台]]></author> <description><![CDATA[ <a target="_blank" href="http://news.qtv.com.cn/system/2015/05/30/012428017.shtml"><img border="0" src="http://t1.baidu.com/it/u=http%3A%2F%2Fimage.qtv.com.cn%2F0%2F12%2F79%2F91%2F12799104_488636.jpg&fm=30"></a><br> 16名密切接触者正在麦理浩夫人度假村改造的隔离营接受隔离。 29日晚11时许,10多名医务人员乘车进入麦理浩夫人度假村隔离营,坐在车头人员有人做足装备,戴了口罩、眼罩及穿上保护衣,后面戴口罩者则带备轻便行装。 据香港东网报道,来自韩国的首例中东呼吸综合征疑似病例确诊后,由于该患者...<br /> <a href="http://news.qtv.com.cn/system/2015/05/30/012428017.shtml" target="_blank" style="font-size:13px">香港警方:韩国MERS患者2名紧密接触者拒接受隔离</a><nobr><span style="padding-left:10px;font-size:12px;color:#666666">青岛网络电视台</font></nobr><br> - <a href="http://news.baidu.com/n?cmd=2&page=http%3A%2F%2Fnews.qtv.com.cn%2Fsystem%2F2015%2F05%2F30%2F012428017.shtml&pn=1&clk=crel&cls=gangaotai&where=focuspage&class=gangaotai"><font color="#008000">1条相关>></font></a><br>]]></description> </item> <item> <title><![CDATA[香港旅发局夏季八千万港元宣传 冀吸引过夜旅客刺..]]></title> <link><![CDATA[http://www.chinanews.com/ga/2015/05-29/7310739.shtml]]></link> <pubDate><![CDATA[2015-05-30T09:07:03.000Z]]></pubDate> <source><![CDATA[中国新闻网]]></source> <author><![CDATA[中国新闻网]]></author> <description><![CDATA[ 中新社香港5月29日电 (记者 李焯龙)香港旅游发展局(旅发局)29日公布,下月中起举办近年最大规模的推广计划,在内地各重点市场展开推广工作,幷联同业界推出多款旅游产品、酒店住宿优惠、大抽奖,冀吸引更多过夜旅客今年夏季来香港,刺激消费市道。 当天,旅发局介绍这项题为“香港FUN享夏日...<br /> - <a href="http://www.chinanews.com/ga/2015/05-29/7310739.shtml" target="_blank"><font color="#008000">中国新闻网</font></a> - <a href="http://www.chinanews.com/ga/2015/05-29/7310258.shtml" target="_blank"><font color="#008000">中国新闻网</font></a> - <a href="http://www.chinanews.com/ga/2015/05-29/7309442.shtml" target="_blank"><font color="#008000">中国新闻网</font></a> - <a href="http://news.baidu.com/n?cmd=2&page=http%3A%2F%2Fwww.chinanews.com%2Fga%2F2015%2F05-29%2F7310739.shtml&pn=1&clk=crel&cls=gangaotai&where=focuspage&class=gangaotai"><font color="#008000">23条相关>></font></a><br>]]></description> </item> <item> <title><![CDATA[香港六月初开拍清宫旧藏、海外私藏系列中国艺术品 ]]></title> <link><![CDATA[http://www.chinanews.com/ga/2015/05-29/7310646.shtml]]></link> <pubDate><![CDATA[2015-05-30T09:07:03.000Z]]></pubDate> <source><![CDATA[中国新闻网]]></source> <author><![CDATA[中国新闻网]]></author> <description><![CDATA[ 中新社香港5月29日电 (记者 孙自法)知名拍卖行香港苏富比将于6月1日至2日举行一系列中国艺术品拍卖,拍品包括清宫旧藏乾隆御制鼻烟壶、比利时私人珍藏中国艺术品、第二代香港家族珍藏玉器及艺术品等共622件,总估价超过5700万港元。 据介绍,系列中国艺术品拍卖分为3场,“鼻烟壶珍藏”...<br /> - <a href="http://www.chinadaily.com.cn/hqcj/xfly/2015-05-30/content_13772497.html" target="_blank"><font color="#008000">中国日报网</font></a> - <a href="http://www.chinanews.com/ga/2015/05-29/7310646.shtml" target="_blank"><font color="#008000">中国新闻网</font></a> - <a href="http://news.baidu.com/n?cmd=2&page=http%3A%2F%2Fwww.chinanews.com%2Fga%2F2015%2F05-29%2F7310646.shtml&pn=1&clk=crel&cls=gangaotai&where=focuspage&class=gangaotai"><font color="#008000">11条相关>></font></a><br>]]></description> </item> <item> <title><![CDATA[中国首家电视媒体——香港“亚洲电视”成立,初..]]></title> <link><![CDATA[http://www.chinadadian.gov.cn/news_view.asp?id=6785]]></link> <pubDate><![CDATA[2015-05-30T09:07:03.000Z]]></pubDate> <source><![CDATA[中国大典编修指导委员会]]></source> <author><![CDATA[中国大典编修指导委员会]]></author> <description><![CDATA[ 1958年5月29日,中国首家电视媒体——香港“亚洲电视”成立,初名“丽的映声”。<br /> - <a href="http://www.chinadadian.gov.cn/news_view.asp?id=6785" target="_blank"><font color="#008000">中国大典编修指导委员会</font></a> - <a href="http://news.baidu.com/n?cmd=2&page=http%3A%2F%2Fwww.chinadadian.gov.cn%2Fnews_view.asp%3Fid%3D6785&pn=1&clk=crel&cls=gangaotai&where=focuspage&class=gangaotai"><font color="#008000">1条相关>></font></a><br>]]></description> </item> </channel> </rss>
代码的解析过程如下:
/// <summary> /// 获取RSS文件中的文章列表 /// </summary> /// <returns></returns> public override bool FetchArticles() { string filePath = "temp.rss"; try { if (this.articles == null) this.articles = new Dictionary<string, Article>(); this.articles.Clear(); WebClient myClient = new WebClient(); myClient.DownloadFile(Url, filePath); XmlDocument myXml = new XmlDocument(); myXml.Load(filePath); //定位channel 节点 XmlNode channel = myXml.DocumentElement.FirstChild; //channel node //定位item 节点 foreach (XmlNode node in channel.ChildNodes) { if (node.Name == "item") { Article atcl = new Article(); foreach (XmlNode subNode in node.ChildNodes) { switch (subNode.Name) { case "title": atcl.Title = subNode.InnerText; break; case "link": atcl.Url = subNode.InnerText; break; } } this.articles.Add(atcl.Title, atcl); } } Clicks++; return true; } catch (Exception e) { Console.WriteLine(e.ToString()); return false; } }