您的位置:首页 > Web前端 > HTML

C#读取,修改并保存html文件——实例

2016-07-25 23:55 465 查看
在C#中对网页中的的信息进行修改并保存。

    写了一个简单的操作例子:

            Stream myStream = new FileStream("RealTimeViedo1.html", FileMode.Open);

            Encoding encode = System.Text.Encoding.GetEncoding("GB2312");

            StreamReader myStreamReader = new StreamReader(myStream, encode);

            string strhtml = myStreamReader.ReadToEnd();

            string stroutput = strhtml.Replace("&*itemId*&", "要替换的内容");

            myStream.Seek(0, SeekOrigin.Begin);

            myStream.SetLength(0);

            StreamWriter sw = new StreamWriter(myStream, encode);

            sw.Write(stroutput);

            sw.Flush();

            sw.Close();

            myStream.Close();

    主要思路:是通过读取一个html文件,将其保存成string类型的字符串,然后找到字符串中要替换的位置并进行替换操作,将替换后的内容要写入到文件中,并进行保存。这里要解释一下Flush(),官方文档描述:Flush()方法将所有信息从基础缓冲区移动到其目标或清除缓冲区,或者同时执行这两种操作。

另外,下边在网页中找到一个具体的操作例子。

 string strbianjiren = UserManager.Instance.CurrentUserName;

            string strfenlei = "";

            string strwenhao = txtFileCode.Text.Trim();//文号

            string strshijian = DateTime.Now.ToString("yyyy-MM-dd");

            int InfoType_ID = int.Parse(ddlInfoType.SelectedValue.ToString());//得到分类ID

            SqlConnection con = AppBase.GetDbConnection();

            SqlCommand cd = con.CreateCommand();

            string listDBInfoTypeSql = "select * from Info.REF_INFOTYPE where InfoType_ID=@InfoType_ID";

            cd.CommandText = listDBInfoTypeSql;

            cd.Parameters.AddWithValue("@InfoType_ID", InfoType_ID);

            SqlDataReader reader = cd.ExecuteReader();

            if (reader.Read())

            {

                strfenlei = (string)reader["InfoType_Name"];

            }

            string strguanjianzi = txtKeyWord.Text;

            string strzhaiyao = txtSummary.Text;

            string strBiaoTi = txtTitle.Text;

            string strNeiRong = content1.Value;

            //string temp = HttpContext.Current.Server.MapPath("a.htm");//读取文件

            string selectCommand = " select * from [INFO].REF_INFO_TEMPLATE where InfoTemplate_Code=2";

            SearchBuilder sb = new SearchBuilder(selectCommand, " InfoTemplate_ID asc ");

            DataTable dt = DbHelper.GetDataTable(AppBase.DbDefault.Connection, sb);

            string temp = dt.Rows[0][3].ToString();

            Encoding code = Encoding.GetEncoding("gb2312"); //声明文件编码

            //StreamReader sr = null;//读取流对象

            StreamWriter sw = null;//写入流对象

            string str = temp;

            Random random = new Random(Guid.NewGuid().GetHashCode());//随机函数

            int indexRandom = random.Next(100, 999);

            htmlfilename = DateTime.Now.ToString("yyyyMMddHHmmss") + indexRandom + ".html";

            createfilename = DateTime.Now.ToString("yyyyMM");

            // 替换内容 

            // 这时,模板文件已经读入到名称为str的变量中了 

            str = str.Replace("&*biaoti*&", strBiaoTi); //模板页中的替换

            str = str.Replace("&*neirong*&", strNeiRong); //模板页中的替换

            str = str.Replace("&*bianjiren*&", strbianjiren);

            str = str.Replace("&*shijian*&", strshijian);

            str = str.Replace("&*fenlei*&", strfenlei);

            str = str.Replace("&*guanjianzi*&", strguanjianzi);

            str = str.Replace("&*zhaiyao*&", strzhaiyao);

            str = str.Replace("&*wenhao*&", strwenhao);

            str = str.Replace("&*NewsId*&", strclicks);

            // 写文件 

            //实际开发中,这里除了写在实际文件里外,还需要把数据写到数据库中并且多保存一个文件的物理路径以便编辑和删除信息

            try

            {

                //创建文件夹

                string FilePath = Server.MapPath("~/htmlmessage/") + createfilename;

                if (!Directory.Exists(FilePath))

                {

                    Directory.CreateDirectory(FilePath);

                }

                sw = new StreamWriter(FilePath + "\\" + htmlfilename, false, code);

                sw.Write(str);

                sw.Flush();

            }

            catch (Exception ex)

            {

                HttpContext.Current.Response.Write(ex.Message);

                HttpContext.Current.Response.End();

            }

            finally

            {

                sw.Close();

            }

    实例来自:http://bbs.csdn.net/topics/360152196
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: