using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Net;
using System.Text;
using System.IO;

namespace stroper
{
    public class tohtml
    {
        public tohtml()
        {
       
        }

/// <summary>
        /// 生成静态网页
        /// </summary>
        /// <param >模板相对路径</param>
        /// <param >生成静态页面的相对路径</param>
        /// <param >页面编码</param>
        /// <param >静态模板标签</param>
        /// <param >替换标签的内容</param>
        public string chg_html(string template_url,string Come_url,string encode,string[] tags,string[] chg_tags)
        {
            //初始化html字节流
            string init_stream = readsr(System.Web.HttpContext.Current.Server.MapPath(template_url), encode);
            //生成文件名
            string fileName=get_filename();
            //完成html字节流
            string ok_streamstr = chg_tag(tags, chg_tags, init_stream);
            //生成存放html的文件夹
            fileoper files = new fileoper();
            files.CreateFolder(Come_url);
            //生成静态页面
            bool okout = outhtml(System.Web.HttpContext.Current.Server.MapPath(Come_url)+"\\" + fileName, encode, ok_streamstr);
            //判断生成成功与失败
            if (okout == true)
            {
                return System.Web.HttpContext.Current.Server.MapPath(Come_url) + "\\" + fileName;
            }
            else
            {
                return "生成失败";
            }
        }

/// <summary>
        /// 读取文件字节流
        /// </summary>
        /// <param >模板相对路径</param>
        /// <param >页面编码</param>
        /// <returns>template静态模板的html字符串</returns>
        private string readsr(string template_url, string encode)
        {
            Encoding code = Encoding.GetEncoding(encode);
            StreamReader sr = null;
            string str = null;

//读取
            try
            {
                sr = new StreamReader(template_url, code);
                str = sr.ReadToEnd();
                return str;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sr.Close();
            }
           
        }

/// <summary>
        /// 生成静态页面的文件名
        /// </summary>
        /// <returns></returns>
        private string get_filename()
        {
            //Random ra = new Random(10);
            //string rnd=ra.Next(1, 999).ToString();
            long tick = DateTime.Now.Ticks;
            Random ra = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            string rnd = ra.Next(1, 999).ToString();
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") +"-"+ rnd + ".htm";
            return fileName;
        }

/// <summary>
        /// 模板的$标志替换
        /// </summary>
        /// <param >静态模板标签</param>
        /// <param >替换标签的内容</param>
        /// <param >template静态模板的html字符串</param>
        /// <returns></returns>
        private string chg_tag(string[] tags,string[] chg_tags,string streamstr)
        {
            //str = str.Replace("$title$", txtTitle.Text);//替换Title
            //str = str.Replace("$content$", txtContent.Text);//替换content
            int i=0;
            for (i = 0; i <= tags.Length-1; i++)
            {
                streamstr = streamstr.Replace(tags[i], chg_tags[i]);
            }
            return streamstr;
        }

/// <summary>
        /// 生成静态页面
        /// </summary>
        /// <param >模板物理地址</param>
        /// <param >生成静态页面的相对路径</param>
        /// <param >页面编码</param>
        /// <param >输出的html字符串</param>
        /// <returns></returns>
        private bool outhtml(string Come_url, string encode, string outhtmlstr)
        {
            StreamWriter sw = null;
            Encoding code = Encoding.GetEncoding(encode);
           
            try
            {
                sw = new StreamWriter(Come_url, false, code);
                sw.Write(outhtmlstr);
                sw.Flush();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sw.Close();
               
            }
        }
    }
}

fileoper.cs [文件处理类]:

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace stroper
{
    public class fileoper
    {
        /**/
        ///
        /// 在根目录下创建文件夹
        ///
        /// 要创建的文件路径
        public void CreateFolder(string FolderPathName)
        {
            if (FolderPathName.Trim().Length > 0)
            {
                try
                {
                    string CreatePath = System.Web.HttpContext.Current.Server.MapPath

(FolderPathName).ToString();
                    if (!Directory.Exists(CreatePath))
                    {
                        Directory.CreateDirectory(CreatePath);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }

/**/
        ///
        /// 删除一个文件夹下面的字文件夹和文件
        ///
        ///
        public void DeleteChildFolder(string FolderPathName)
        {
            if (FolderPathName.Trim().Length > 0)
            {
                try
                {
                    string CreatePath = System.Web.HttpContext.Current.Server.MapPath

(FolderPathName).ToString();
                    if (Directory.Exists(CreatePath))
                    {
                        Directory.Delete(CreatePath, true);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }

/**/
        ///
        /// 删除一个文件
        ///
        ///
        public void DeleteFile(string FilePathName)
        {
            try
            {
                FileInfo DeleFile = new FileInfo(System.Web.HttpContext.Current.Server.MapPath

(FilePathName).ToString());
                DeleFile.Delete();
            }
            catch
            {
            }
        }
        public void CreateFile(string FilePathName)
        {
            try
            {
                //创建文件夹
                string[] strPath = FilePathName.Split('/');
                CreateFolder(FilePathName.Replace("/" + strPath[strPath.Length - 1].ToString(), "")); //创建文件

FileInfo CreateFile = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(FilePathName).ToString()); //创建文件
                if (!CreateFile.Exists)
                {
                    FileStream FS = CreateFile.Create();
                    FS.Close();
                }
            }
            catch
            {
            }
        }
        /**/
        ///
        /// 删除整个文件夹及其字文件夹和文件
        ///
        ///
        public void DeleParentFolder(string FolderPathName)
        {
            try
            {
                DirectoryInfo DelFolder = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath

(FolderPathName).ToString());
                if (DelFolder.Exists)
                {
                    DelFolder.Delete();
                }
            }
            catch
            {
            }
        }
        /**/
        ///
        /// 在文件里追加内容
        ///
        ///
        public void ReWriteReadinnerText(string FilePathName, string WriteWord)
        {
            try
            {
                //建立文件夹和文件
                //CreateFolder(FilePathName);
                CreateFile(FilePathName);
                //得到原来文件的内容
                FileStream FileRead = new FileStream(System.Web.HttpContext.Current.Server.MapPath

(FilePathName).ToString(), FileMode.Open, FileAccess.ReadWrite);
                StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
                string OldString = FileReadWord.ReadToEnd().ToString();
                OldString = OldString + WriteWord;
                //把新的内容重新写入
                StreamWriter FileWrite = new StreamWriter(FileRead, System.Text.Encoding.Default);
                FileWrite.Write(WriteWord);
                //关闭
                FileWrite.Close();
                FileReadWord.Close();
                FileRead.Close();
            }
            catch
            {
                throw;
            }
        }

/**/
        ///
        /// 在文件里追加内容
        ///
        ///
        public string ReaderFileData(string FilePathName)
        {
            try
            {

FileStream FileRead = new FileStream(System.Web.HttpContext.Current.Server.MapPath

(FilePathName).ToString(), FileMode.Open, FileAccess.Read);
                StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
                string TxtString = FileReadWord.ReadToEnd().ToString();
                //关闭
                FileReadWord.Close();
                FileRead.Close();
                return TxtString;
            }
            catch
            {
                throw;
            }
        }
        /**/
        ///
        /// 读取文件夹的文件
        ///
        ///
        ///
        public DirectoryInfo checkValidSessionPath(string FilePathName)
        {
            try
            {
                DirectoryInfo MainDir = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath

(FilePathName));
                return MainDir;

}
            catch
            {
                throw;
            }
        }
    }
}

页面调用:

protected void Button1_Click(object sender, EventArgs e)
    {
        string[] a=new string[]{"$title$","$content$"};
        string[] b = new string[] { txtTitle.Text, txtContent.Text };
        tohtml myhtml = new tohtml();
        string htmpath=myhtml.chg_html("template/template.htm","htm","gb2312",a,b);
        Response.Write(htmpath);

转载于:https://www.cnblogs.com/taoligong/archive/2012/06/18/2553419.html

C#语言: 生成静态页面核心代码相关推荐

  1. 提供生成静态页核心代码

    Code using System; using System.Collections.Generic; using System.Text; using System.IO; using Syste ...

  2. php简单的静态页面现成,PHP生成静态页面的简单方法

    页面静态化的方法,分为两种,一种是伪静态,就是url 重写,一种是你真的静态化.下面介绍PHP中页面静态化的方法. 什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现 ...

  3. PHP代码为什么不能直接保存HTML文件——PHP生成静态页面教程

    1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...

  4. php读取模板生成静态功能,php 生成静态页面的办法与实现代码详细版

    php中主要用到的就是要用到fread()和fwirte().而静态页面生成了之后,就会牵扯到修改的问题.这里可以用到正则匹配的方法来替换模版中改变的部位.不过此种方法太麻烦,值得推荐的方法是直接把原 ...

  5. php生成文章页,php结合smarty生成静态页面php文章内分页代码

    本文介绍了php中使用smarty模板引擎生成静态页面的方法,以及php实现文章分页的实现代码,需要的朋友参考下. 例子,php中smarty生成静态页.文章内分页代码.专题:php分页代码原理 ', ...

  6. tp5 生成静态页面代码

    //写入/***$filepath 生成静态文件路径$tpl 模板文件名称***/private function filePutContents($filepath,$tpl){ob_start() ...

  7. 网站生成静态页面,及网站数据采集的攻、防原理和策略

    关于本文:         本着互联网共享主义精神,特写此文献给建站新手,授人以鱼,不如授人以渔,本文所讲的只是方法和原理,希望大家看完此文,能够从中得到些帮助和启发. 本文从一个ASP程序员的角度用 ...

  8. Java项目生成静态页面

    文章由本人原创,如需转载,请注明转载出处!本文地址: http://blog.csdn.net/xxd851116/archive/2009/06/24/4293239.aspx 第一次做项目需要生成 ...

  9. 动态网站如何生成静态页面

    本文从一个ASP程序员的角度用大量实例祥细介绍了动态网站如何生成静态页面原理,又从一个采集程序开发者的角度去祥细介绍了网站数据采集的原理及功防策略. 关于网站生成静态页面,为了让本文读者容易理解,文内 ...

最新文章

  1. LeetCode简单题之找出两数组的不同
  2. add_compile_options和CMAKE_CXX_FLAGS的区别
  3. 从 保龄球得分计算方法 浅析 深度学习
  4. AutoMapper的使用
  5. scp瓶中船是什么梗_早安打工人是什么梗?
  6. 将图片储存在dataset_最新15-16方联体垃圾箱价格图片
  7. nodejs后台系列--第六篇-把nodejs后台部署到云服务器上面
  8. Google登陆集成笔记-含坑
  9. http 406 java_java – Spring JSON请求获取406(不可接受)
  10. 蜜瓜文案:水果蜜瓜文案短句,水果店蜜瓜发朋友圈文案
  11. 解决0x80070035找不到网络路径
  12. asc18_hpl,hpc,hpcg
  13. 原生m1/m2 Sketch v90 for Mac最新中文版Sketch已更新,已解决闪退打不开问题
  14. AI-040: Python深度学习3 - 三个Karas实例-2
  15. 【原创】遥感影像法分析河流演变
  16. [C语言] 文件操作《一》
  17. java公众号上传素材及发送图文消息实现
  18. s110 raid linux,dell s110阵列卡驱动下载
  19. 论文解读TransFG: A Transformer Architecture for Fine-grained Recognition
  20. suse linux查看CPU温度,Ubuntu下查看CPU温度风扇转速和硬盘温度

热门文章

  1. 使用tensorflow object detection API 训练自己的目标检测模型 (三)
  2. 7-11 分段计算居民水费
  3. android studio如何设置输出值的小数点_C语言基础知识:printf的输出格式,C/C++语言编程讲解...
  4. 通过接口给fragment传值_Dataway 4.1.3 发布,开发一个接口不必在编写任何形式的代码,秒级交付!...
  5. Jenkins配置钉钉通知
  6. 萌新的Python练习实例100例(六)斐波那契数列
  7. Coinbase及Bakkt为Paul Tudor Jones的家族对冲基金提供托管服务
  8. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌1.97%
  9. SUSHI区块奖励将根据此前提案在3月降至每区块40枚
  10. SAP License:SAP收购Roambi,领导全球市场商务分析云迁移