<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_专注于.Net</title><subtitle type="text">享受编程的乐趣</subtitle><id>http://feed.cnblogs.com/blog/u/32412/rss</id><updated>2011-11-22T09:07:15Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/32412/rss"/><entry><id>http://www.cnblogs.com/cxy521/archive/2011/06/30/2094444.html</id><title type="text">[转]系统性能调优吐血总结分享</title><summary type="text">概述Ø 性能优化的思路首先是较为精准的定位问题，借助于相应的工具包，分析系统性能瓶颈在哪，在根据其性能指标，以及所处于层级决定选择优化的方式方法。在选择优化的方式方法时，大家可以参照以下章节调优方法，架构优化递进，进行正确的，有针对性，有步骤的优化。可能会发现部分指导思想或许有相悖嫌疑，大可不必较真，系统优化的过程本身就是一个不断分离+共享的组合拳，至于具体选择哪种优化方式，根据具体需求来定，但大型应用发展的总体思路是不断分离，在通过索引（非数据库）进行关联起来，切记：优化一定要对系统进行细致的望闻问切，找到性能问题根源切入点，而不被表象迷糊，对症下药，发现病症所在的医生并不比操作手</summary><published>2011-06-30T06:46:00Z</published><updated>2011-06-30T06:46:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2011/06/30/2094444.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2011/06/30/2094444.html"/><content type="html">&lt;p&gt;&lt;strong&gt;概述&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;Oslash; &lt;b&gt;性能优化的思路&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;首先是较为精准的定位问题，借助于相应的工具包，分析系统性能瓶颈在哪，在根据其性能指标，以及所处于层级决定选择优化的方式方法。在选择优化的方式方法时，大家可以参照以下章节调优方法，架构优化递进，进行正确的，有针对性，有步骤的优化。可能会发现部分指导思想或许有相悖嫌疑，大可不必较真，系统优化的过程本身就是一个不断分离+共享的组合拳，至于具体选择哪种优化方式，根据具体需求来定，但大型应用发展的总体思路是不断分离，在通过索引（非数据库）进行关联起来，&lt;/p&gt;&lt;p&gt;切记：&lt;b&gt;优化一定要对系统进行细致的望闻问切，找到性能问题根源切入点，而不被表象迷糊，对症下药&lt;/b&gt;，发现病症所在的医生并不比操作手术刀的医生水平差。本文有工具包一章节，对于需要做优化的人员，需要熟悉，他就是我们诊断所用的CT，例如我们发现内存高了，首先想到不是内存不够用，而是为什么如此消耗内存，用工具看看内存消耗在什么地方，试想之，如在医院，病人告诉医生，他心脏不好，医生就换心脏，那样的话，每个人只要熟练掌握菜刀，都可以做医生&lt;/p&gt;&lt;p&gt;&amp;Oslash; &lt;b&gt;迭代优化&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;性能优化未必一次性就能满足的，可能此处瓶颈消失了，系统一旦运转快速后，在其他地方又发现新的性能瓶颈，所以性能优化是一个迭代的工作。直至满足系统需要的性能指标。&lt;/p&gt;&lt;p&gt;&amp;Oslash; &lt;b&gt;优化的成本&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;系统性能设计或优化是否可以一步升天，按照最好的分布式架构进行设计和优化呢，单个节点一直也运转及其健康，理论上是可以达到共产国际的，但实际实施层面不可取，必须结合实际的非功能需求进行设计和优化，一则一步到极致的话，系统的成本太过虑庞大，光是性能设计和优化的成本就高于系统本身给客户所提供的价值，也造成研发成本开销过大。二则好像能够架构这样完美系统的人还没诞生。所以一句话也同样适合架构师：有理想而不理想化，废话少扯：具体见法则&lt;/p&gt;&lt;p&gt;&lt;strong&gt;调优方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;数据库优化&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;很多应用，优化DB往往是最直接，最方便，见效最显著的，但并非所有的系统性能都处在瓶颈，或者DB瓶颈解决之后，可能应用层瓶颈，WEB层瓶颈，甚至架构瓶颈都会冒出来了,所以数据库优化十分重要，但往往很多人理解系统优化就是数据库优化，是不全面的。优化角色一般推荐具备较深数据知识的程序员，或者专业的DBA,而不只是会CRUD开发人员&lt;/p&gt;&lt;p&gt;&amp;Oslash; 建立正确的主键，外键，以及索引&lt;/p&gt;&lt;p&gt;&amp;Oslash; 分离原则：读写分离，业务数据分离&lt;/p&gt;&lt;p&gt;a) 分库&lt;/p&gt;&lt;p&gt;b) 分区&lt;/p&gt;&lt;p&gt;c) 分表&lt;/p&gt;&lt;p&gt;d) 分列（将大字段，不常用的隔离到他表，按需查询）&lt;/p&gt;&lt;p&gt;&amp;Oslash; 选择隔离级别：某些对数据一致性要求不高的，可以牺牲部分一致性，降低加锁阻塞&lt;/p&gt;&lt;p&gt;&amp;Oslash; 保证事务简短以及减少不必要的锁机制。&lt;/p&gt;&lt;p&gt;&amp;Oslash; 查询优化规则：&lt;/p&gt;&lt;p&gt;e) 避免表内的相关子查询；&lt;/p&gt;&lt;p&gt;f) 避免排序或为尽可能少的行排序，&lt;/p&gt;&lt;p&gt;g) 做大量数据排序时相关数据放在临时表中&lt;/p&gt;&lt;p&gt;h) .尽量在where后多传查询条件，以减少不必要返回的行&lt;/p&gt;&lt;p&gt;i) .尽量select只需要的字段,以减少不必要返回的列&lt;/p&gt;&lt;p&gt;&amp;Oslash; 分页存储过程：大列表的查询也可以利用分页存储过程达到优化效果。&lt;/p&gt;&lt;p&gt;&amp;Oslash; 利用数据库缓存，视图，临时表等最大程度优化系统，并对存储过程和函数进行必要的优化&lt;/p&gt;&lt;p&gt;&amp;Oslash; 如有需要，可以冗余表中字段，避免联合查询&lt;/p&gt;&lt;p&gt;&amp;Oslash; 如有需要，也可以将表内的大字段分离到单独表中，使其单独查询&lt;/p&gt;&lt;p&gt;&amp;Oslash; 必做多表关联时，尽量过滤不符条件表中数据，减少笛卡尔积计算量&lt;/p&gt;&lt;p&gt;&amp;Oslash; 复杂表表：如实时性要求不高，尽量后台任务计算，避免动态查询&lt;/p&gt;&lt;p&gt;&lt;strong&gt;应用层优化&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;应用层优化侧重于应用层本身的逻辑优化，算法优化，代码优化等，优化的角色可以是熟悉应用的程序员&lt;/p&gt;&lt;p&gt;&amp;Oslash; 优化算法，选择合适高效的算法，降低不必要的递归，循环、多层循环嵌套等计算&lt;/p&gt;&lt;p&gt;&amp;Oslash; 避免申请过多的不必要的内存开销&lt;/p&gt;&lt;p&gt;&amp;Oslash; 降低内存泄露（using，Dispose，弱引用，Finalize）&lt;/p&gt;&lt;p&gt;&amp;Oslash; 使用频率较低的大文件，大对象，大数组等使用完毕后，及时释放&lt;/p&gt;&lt;p&gt;&amp;Oslash; 使用频率较高的大文件，大对象，大数组尽量缓存&lt;/p&gt;&lt;p&gt;&amp;Oslash; 考虑多线程技术&lt;/p&gt;&lt;p&gt;&amp;Oslash; 选择适当的通信方式：长连接，短连接,有以下方式Socket、Remoting、Web Services(Rest,Soap)、WCF、 Named Pipes&lt;/p&gt;&lt;p&gt;&amp;Oslash; 降低应用之间通信次数，例用户认证服务，工作流服务，数据库服务&lt;/p&gt;&lt;p&gt;&amp;Oslash; 降低应用之间传输数据量，不必要传输的不传，少传&lt;/p&gt;&lt;p&gt;&amp;Oslash; 缓存机制：缓存常用的，不易变化的，偶有变化，可以考虑缓存依赖机制&lt;/p&gt;&lt;p&gt;&amp;Oslash; 支持异步计算，降低等待时间&lt;/p&gt;&lt;p&gt;&amp;Oslash; 考虑延迟加载，或者提前加载两种方式&lt;/p&gt;&lt;p&gt;&amp;Oslash; 分离原则：分离业务模块,如分离大I/O模块、分离高耗内存模块，分离高耗宽带模块&lt;/p&gt;&lt;p&gt;&amp;Oslash; 考虑分布式应用，分布式存储，如以上所有仍然搞不定的&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Web优化&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Web优化偏向于熟悉前端开发的技术人员&lt;/p&gt;&lt;p&gt;&amp;Oslash; 减少http请求&lt;/p&gt;&lt;p&gt;&amp;Oslash; 避免404错误&lt;/p&gt;&lt;p&gt;&amp;Oslash; 在html页面header加入缓存标签&lt;/p&gt;&lt;p&gt;&amp;Oslash; Gzip压缩网页&lt;/p&gt;&lt;p&gt;&amp;Oslash; 减少cookie体积&lt;/p&gt;&lt;p&gt;&amp;Oslash; 使用外部的js和css&lt;/p&gt;&lt;p&gt;&amp;Oslash; 消减js和css&lt;/p&gt;&lt;p&gt;&amp;Oslash; 压缩js&lt;/p&gt;&lt;p&gt;&amp;Oslash; 使用css sprites技术，众多图片合成在一起，通过CSS切分，降低图片传输的频率和数据量&lt;/p&gt;&lt;p&gt;&amp;Oslash; 可以使用静态网页的，避免使用动态网页&lt;/p&gt;&lt;p&gt;&lt;strong&gt;架构优化递进&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;为以示与应用层优化的区别，本文对架构的描述更侧重偏向于物理层面，再次赘述下，涉及变更架构的，需要我们的应用具有良好的拓展性，考验我们的架构师平时的功底，如何刚刚好满足需求以及两三年内业务增量，但并非架构做的越强大，越灵活，越可配置，越易水平拓展就是越好的，其一考虑此应用的投入产出比，换言之，是否值得投入这么多架构设计成本，其二架构设计也是具有一定的时效性的，IT速度太快了，今天的好东西未必是明天的好东西，年轻貌美的姑娘，总有变成老太婆那一天嘛,再者、越灵活的架构，就意味着存在更多的配置项，从某一方面，反而增加了系统的复杂度，最后、很多大型，成熟的应用，也并非一蹴而就，而是通过不断的调整优化，不断变更架构的。圣人也并非天生的，而是不断的总结，提炼，优化，重构&lt;/p&gt;&lt;p&gt;&amp;Oslash; 硬件方面使用高性能的小型机、存储设备。使用极好的网络带宽&lt;/p&gt;&lt;p&gt;&amp;Oslash; 物理分离Web Server和DB Server或者其他服务如：用户认证服务&lt;/p&gt;&lt;p&gt;&amp;Oslash; 缓存&lt;/p&gt;&lt;p&gt;&amp;uuml; 数据缓存机制&lt;/p&gt;&lt;p&gt;&amp;uuml; 页面缓存机制&lt;/p&gt;&lt;p&gt;&amp;Oslash; 物理分离业务模块，单业务单独部署一台服务器&lt;/p&gt;&lt;p&gt;&amp;Oslash; 部署多台Web Server&lt;/p&gt;&lt;p&gt;&amp;Oslash; Web负载均衡-F5&lt;/p&gt;&lt;p&gt;&amp;Oslash; 数据读写分离&lt;/p&gt;&lt;p&gt;&amp;Oslash; 使用消息队列 进行各种应用间进行同步/异步计算&lt;/p&gt;&lt;p&gt;&amp;Oslash; 应用间选择合适的通信方式，通信协议&lt;/p&gt;&lt;p&gt;&amp;Oslash; Web分布式，应用分布式，数据分布式&lt;/p&gt;&lt;p&gt;&amp;Oslash; 分布式的节点使用高性能服务器，小型机群,辅以高速网络带宽等&lt;/p&gt;&lt;p&gt;&lt;strong&gt;工具包&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;Oslash; 进程管理器，CPU，内存，I/O&lt;/p&gt;&lt;p&gt;&amp;Oslash; 日志：IIS日志，Windows日志，系统本身日志&lt;/p&gt;&lt;p&gt;&amp;Oslash; 使用dotTrace,跟踪方法执行时间，找出速度慢的方法，针对性优化&lt;/p&gt;&lt;p&gt;&amp;Oslash; Sql Profile跟踪SQL耗时情况，针对性优化&lt;/p&gt;&lt;p&gt;&amp;Oslash; HttpWatch跟踪请求耗时，以及发送和收到数据量&lt;/p&gt;&lt;p&gt;&amp;Oslash; Performance Count，使用计数器，统计相关性能指标&lt;/p&gt;&lt;p&gt;&amp;Oslash; CLRProfiler内存泄露检测工具&lt;/p&gt;&lt;p&gt;&amp;Oslash; LoadRunner，压力测试，发现性能瓶颈&lt;/p&gt;&lt;p&gt;&lt;strong&gt;其他补充&lt;/strong&gt;&lt;/p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/wcyao/201106/201106291308403179.png"&gt;&lt;img height="1358" width="100%" src="http://images.cnblogs.com/cnblogs_com/wcyao/201106/201106291308422015.png" alt="系统性能调优" border="0" title="系统性能调优" style="display: inline; border-width: 0px;" /&gt;&lt;/a&gt;&lt;img src="http://www.cnblogs.com/cxy521/aggbug/2094444.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxy521/archive/2011/06/30/2094444.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2011/04/22/2024649.html</id><title type="text">[转]C#读取CSV,Excel,Txt文件，删除文件，拷贝文件</title><summary type="text">#region 读取csv文件/// &lt;summary&gt;/// 读取CVS文件/// &lt;/summary&gt;/// &lt;param name="path"&gt;文件路径&lt;/param&gt;/// &lt;param name="name"&gt;文件名称&lt;/param&gt;/// &lt;returns&gt;DataTable&lt;/returns&gt;public static DataTable ReadCVS(string filepath, string filename){//string cv</summary><published>2011-04-22T03:00:00Z</published><updated>2011-04-22T03:00:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2011/04/22/2024649.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2011/04/22/2024649.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;#region 读取csv文件&lt;br /&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 读取CVS文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name="path"&amp;gt;文件路径&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="name"&amp;gt;文件名称&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;DataTable&amp;lt;/returns&amp;gt;&lt;br /&gt;public static DataTable ReadCVS(string filepath, string filename)&lt;br /&gt;{&lt;br /&gt;//string cvsDir = filepath;//要读取的CVS路径&lt;br /&gt;DataTable dt = new DataTable();&lt;br /&gt;if (filename.Trim().ToUpper().EndsWith("CSV"))//判断所要读取的扩展名&lt;br /&gt;{&lt;br /&gt;string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&lt;br /&gt;+ filepath + ";Extended Properties='text;HDR=NO;FMT=Delimited'";//有列的读取&lt;br /&gt;string commandText = "select * from [" + filename + "]";//SQL语句&lt;/p&gt; &lt;p&gt;OleDbConnection olconn = new OleDbConnection(connStr);&lt;br /&gt;olconn.Open();&lt;br /&gt;OleDbDataAdapter odp = new OleDbDataAdapter(commandText, olconn);&lt;br /&gt;odp.Fill(dt);&lt;br /&gt;olconn.Close();&lt;br /&gt;odp.Dispose();&lt;br /&gt;olconn.Dispose();&lt;br /&gt;}&lt;br /&gt;return dt;&lt;br /&gt;}&lt;br /&gt;#endregion&lt;/p&gt; &lt;p&gt;#region 读取xls文件&lt;br /&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 读取Excel文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name="filepath"&amp;gt;文件路径&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="filename"&amp;gt;文件名称&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;DataTable&amp;lt;/returns&amp;gt;&lt;br /&gt;public static DataTable ReadExcel(string filepath, string filename)&lt;br /&gt;{&lt;br /&gt;DataTable dt = new DataTable();&lt;br /&gt;if (filename.Trim().ToUpper().EndsWith("XLS"))&lt;br /&gt;{&lt;br /&gt;string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&lt;br /&gt;+ filepath + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";&lt;br /&gt;string commandText = "select * from [" + filename + "]";&lt;/p&gt; &lt;p&gt;OleDbConnection olconn = new OleDbConnection(connStr);&lt;br /&gt;olconn.Open();&lt;br /&gt;OleDbDataAdapter odp = new OleDbDataAdapter(commandText, olconn);&lt;br /&gt;odp.Fill(dt);&lt;br /&gt;olconn.Close();&lt;br /&gt;odp.Dispose();&lt;br /&gt;olconn.Dispose();&lt;br /&gt;}&lt;br /&gt;return dt;&lt;br /&gt;}&lt;br /&gt;#endregion&lt;/p&gt; &lt;p&gt;#region 读取txt文件&lt;br /&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 读取Txt文本文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name="filepath"&amp;gt;文件路径&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="filename"&amp;gt;文件名称&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;文本信息&amp;lt;/returns&amp;gt;&lt;br /&gt;public static string ReadTxt(string filepath, string filename)&lt;br /&gt;{&lt;br /&gt;StringBuilder sb = new StringBuilder("");&lt;br /&gt;//StreamReader sr = new StreamReader(filepath + filename); ;&lt;br /&gt;StreamReader sr = new StreamReader(filepath + filename, Encoding.GetEncoding("GB2312"));&lt;br /&gt;string line;&lt;br /&gt;while ((line = sr.ReadLine()) != null)&lt;br /&gt;{&lt;br /&gt;sb.AppendLine(line);&lt;br /&gt;}&lt;br /&gt;sr.Close();&lt;br /&gt;sr.Dispose();&lt;br /&gt;return sb.ToString();&lt;br /&gt;}&lt;br /&gt;#endregion&lt;/p&gt; &lt;p&gt;#endregion&lt;/p&gt; &lt;p&gt;#region 文件删除&lt;br /&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 删除文件操作&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name="filePath"&amp;gt;文件路径&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="fileName"&amp;gt;文件名称&amp;lt;/param&amp;gt;&lt;br /&gt;public static void DeleteFile(string filePath, string fileName)&lt;br /&gt;{&lt;br /&gt;string destinationFile = filePath + fileName;&lt;br /&gt;//如果文件存在，删除文件&lt;br /&gt;if (File.Exists(destinationFile))&lt;br /&gt;{&lt;br /&gt;FileInfo fi = new FileInfo(destinationFile);&lt;br /&gt;if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)&lt;br /&gt;fi.Attributes = FileAttributes.Normal;&lt;/p&gt; &lt;p&gt;File.Delete(destinationFile);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;#endregion&lt;/p&gt; &lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 拷贝文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name="fromFilePath"&amp;gt;文件的路径&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name="toFilePath"&amp;gt;文件要拷贝到的路径&amp;lt;/param&amp;gt;&lt;br /&gt;private bool CopyFile(string fromFilePath, string toFilePath)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;if (File.Exists(fromFilePath))&lt;br /&gt;{&lt;br /&gt;if (File.Exists(toFilePath))&lt;br /&gt;{&lt;br /&gt;File.Delete(toFilePath);&lt;br /&gt;}&lt;br /&gt;File.Move(fromFilePath, toFilePath);&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;catch&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/cxy521/aggbug/2024649.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxy521/archive/2011/04/22/2024649.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2011/04/22/2024645.html</id><title type="text">[转]C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....</title><summary type="text">本文收集了目前最为常用的C#经典操作文件的方法，具体内容如下：C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下 面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建HTML 文件、CreateDirectory方法的使用C#追加文件StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");sw.WriteLine("追逐理想");sw.Writ</summary><published>2011-04-22T02:58:00Z</published><updated>2011-04-22T02:58:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2011/04/22/2024645.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2011/04/22/2024645.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;div&gt; &lt;p&gt;本文收集了目前最为常用的C#经典操作文件的方法，具体内容如下：C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下   面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建HTML  文件、CreateDirectory方法的使用&lt;br /&gt;C#追加文件&amp;nbsp;&lt;br /&gt;StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");&amp;nbsp;&lt;br /&gt;sw.WriteLine("追逐理想");&amp;nbsp;&lt;br /&gt;sw.WriteLine("kzlll");&amp;nbsp;&lt;br /&gt;sw.WriteLine(".NET笔记");&amp;nbsp;&lt;br /&gt;sw.Flush();&amp;nbsp;&lt;br /&gt;sw.Close();&amp;nbsp;&lt;br /&gt;C#拷贝文件&amp;nbsp;&lt;br /&gt;string OrignFile,NewFile;&amp;nbsp;&lt;br /&gt;OrignFile = Server.MapPath(".")+"\\myText.txt";&amp;nbsp;&lt;br /&gt;NewFile = Server.MapPath(".")+"\\myTextCopy.txt";&amp;nbsp;&lt;br /&gt;File.Copy(OrignFile,NewFile,true);&amp;nbsp;&lt;br /&gt;C#删除文件&amp;nbsp;&lt;br /&gt;string delFile = Server.MapPath(".")+"\\myTextCopy.txt";&amp;nbsp;&lt;br /&gt;File.Delete(delFile);&amp;nbsp;&lt;br /&gt;C#移动文件&amp;nbsp;&lt;br /&gt;string OrignFile,NewFile;&amp;nbsp;&lt;br /&gt;OrignFile = Server.MapPath(".")+"\\myText.txt";&amp;nbsp;&lt;br /&gt;NewFile = Server.MapPath(".")+"\\myTextCopy.txt";&amp;nbsp;&lt;br /&gt;File.Move(OrignFile,NewFile);&amp;nbsp;&lt;br /&gt;C#创建目录&amp;nbsp;&lt;br /&gt;// 创建目录c:\sixAge&amp;nbsp;&lt;br /&gt;DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge");&amp;nbsp;&lt;br /&gt;// d1指向c:\sixAge\sixAge1&amp;nbsp;&lt;br /&gt;DirectoryInfo d1=d.CreateSubdirectory("sixAge1");&amp;nbsp;&lt;br /&gt;// d2指向c:\sixAge\sixAge1\sixAge1_1&amp;nbsp;&lt;br /&gt;DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");&amp;nbsp;&lt;br /&gt;// 将当前目录设为c:\sixAge&amp;nbsp;&lt;br /&gt;Directory.SetCurrentDirectory("c:\\sixAge");&amp;nbsp;&lt;br /&gt;// 创建目录c:\sixAge\sixAge2&amp;nbsp;&lt;br /&gt;Directory.CreateDirectory("sixAge2");&amp;nbsp;&lt;br /&gt;// 创建目录c:\sixAge\sixAge2\sixAge2_1&amp;nbsp;&lt;br /&gt;Directory.CreateDirectory("sixAge2\\sixAge2_1");&amp;nbsp;&lt;br /&gt;递归删除文件夹及文件&amp;nbsp;&lt;br /&gt;&amp;lt;%@ Page Language=C#%&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;lt;%@ Import namespace="System.IO"%&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;lt;script_ runat=server&amp;gt;&amp;nbsp;&lt;br /&gt;public void DeleteFolder(string dir)&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;if (Directory.Exists(dir)) //如果存在这个文件夹删除之&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;foreach(string d in Directory.GetFileSystemEntries(dir))&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;if(File.Exists(d))&amp;nbsp;&lt;br /&gt;File.Delete(d); //直接删除其中的文件&amp;nbsp;&lt;br /&gt;else&amp;nbsp;&lt;br /&gt;DeleteFolder(d); //递归删除子文件夹&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;Directory.Delete(dir); //删除已空文件夹&amp;nbsp;&lt;br /&gt;Response.Write(dir+" 文件夹删除成功");&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;else&amp;nbsp;&lt;br /&gt;Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;protected void Page_Load (Object sender ,EventArgs e)&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;string Dir="D:\\gbook\\11";&amp;nbsp;&lt;br /&gt;DeleteFolder(Dir); //调用函数删除文件夹&amp;nbsp;&lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;// ======================================================&lt;br /&gt;// 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面&lt;br /&gt;// 如果目标文件夹为只读属性就会报错。&lt;br /&gt;// April 18April2005 In STU&lt;br /&gt;// ======================================================&lt;br /&gt;public static void CopyDir(string srcPath,string aimPath)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;// 检查目标目录是否以目录分割字符结束如果不是则添加之&lt;br /&gt;if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)&amp;nbsp;&lt;br /&gt;aimPath += Path.DirectorySeparatorChar;&lt;br /&gt;// 判断目标目录是否存在如果不存在则新建之&lt;br /&gt;if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);&lt;br /&gt;// 得到源目录的文件列表，该里面是包含文件以及目录路径的一个数组&lt;br /&gt;// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法&lt;br /&gt;// string[] fileList = Directory.GetFiles(srcPath);&lt;br /&gt;string[] fileList = Directory.GetFileSystemEntries(srcPath);&lt;br /&gt;// 遍历所有的文件和目录&lt;br /&gt;foreach(string file in fileList)&lt;br /&gt;{&lt;br /&gt;// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件&lt;br /&gt;if(Directory.Exists(file))&lt;br /&gt;CopyDir(file,aimPath+Path.GetFileName(file));&lt;br /&gt;// 否则直接Copy文件&lt;br /&gt;else&lt;br /&gt;File.Copy(file,aimPath+Path.GetFileName(file),true);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;MessageBox.Show (e.ToString());&lt;br /&gt;}&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;// ======================================================&lt;br /&gt;// 实现一个静态方法将指定文件夹下面的所有内容Detele&lt;br /&gt;// 测试的时候要小心操作，删除之后无法恢复。&lt;br /&gt;// ======================================================&lt;br /&gt;public static void DeleteDir(string aimPath)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;// 检查目标目录是否以目录分割字符结束如果不是则添加之&lt;br /&gt;if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)&amp;nbsp;&lt;br /&gt;aimPath += Path.DirectorySeparatorChar;&lt;br /&gt;// 得到源目录的文件列表，该里面是包含文件以及目录路径的一个数组&lt;br /&gt;// 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法&lt;br /&gt;// string[] fileList = Directory.GetFiles(aimPath);&lt;br /&gt;string[] fileList = Directory.GetFileSystemEntries(aimPath);&lt;br /&gt;// 遍历所有的文件和目录&lt;br /&gt;foreach(string file in fileList)&lt;br /&gt;{&lt;br /&gt;// 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件&lt;br /&gt;if(Directory.Exists(file))&lt;br /&gt;{&lt;br /&gt;DeleteDir(aimPath+Path.GetFileName(file));&lt;br /&gt;}&lt;br /&gt;// 否则直接Delete文件&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;File.Delete (aimPath+Path.GetFileName(file));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;//删除文件夹&lt;br /&gt;System.IO .Directory .Delete (aimPath,true);&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;MessageBox.Show (e.ToString());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;需要引用命名空间：&lt;br /&gt;using System.IO;&lt;br /&gt;/**//// &amp;lt;summary&amp;gt;&lt;br /&gt;&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param &amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param &amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;//--------------------------------------------------&lt;br /&gt;//---------------------------------------------------&lt;br /&gt;public static void CopyFolder(string strFromPath,string strToPath)&lt;br /&gt;{&lt;br /&gt;//如果源文件夹不存在，则创建&lt;br /&gt;if (!Directory.Exists(strFromPath))&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;Directory.CreateDirectory(strFromPath);&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;//取得要拷贝的文件夹名&lt;br /&gt;string  strFolderName = strFromPath.Substring(strFromPath.LastIndexOf("\\") +  1,strFromPath.Length - strFromPath.LastIndexOf("\\") - 1);&amp;nbsp;&lt;br /&gt;//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹&lt;br /&gt;if (!Directory.Exists(strToPath + "\\" + strFolderName))&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;Directory.CreateDirectory(strToPath + "\\" + strFolderName);&lt;br /&gt;}&lt;br /&gt;//创建数组保存源文件夹下的文件名&lt;br /&gt;string[] strFiles = Directory.GetFiles(strFromPath);&lt;br /&gt;//循环拷贝文件&lt;br /&gt;for(int i = 0;i &amp;lt; strFiles.Length;i++)&lt;br /&gt;{&lt;br /&gt;//取得拷贝的文件名，只取文件名，地址截掉。&lt;br /&gt;string  strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("\\") +  1,strFiles[i].Length - strFiles[i].LastIndexOf("\\") - 1);&lt;br /&gt;//开始拷贝文件,true表示覆盖同名文件&lt;br /&gt;File.Copy(strFiles[i],strToPath + "\\" + strFolderName + "\\" + strFileName,true);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//创建DirectoryInfo实例&lt;br /&gt;DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);&lt;br /&gt;//取得源文件夹下的所有子文件夹名称&lt;br /&gt;DirectoryInfo[] ZiPath = dirInfo.GetDirectories();&lt;br /&gt;for (int j = 0;j &amp;lt; ZiPath.Length;j++)&lt;br /&gt;{&lt;br /&gt;//获取所有子文件夹名&lt;br /&gt;string strZiPath = strFromPath + "\\" + ZiPath[j].ToString();&amp;nbsp;&lt;br /&gt;//把得到的子文件夹当成新的源文件夹，从头开始新一轮的拷贝&lt;br /&gt;CopyFolder(strZiPath,strToPath + "\\" + strFolderName);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;一．读取文本文件&lt;br /&gt;　/**//// &amp;lt;summary&amp;gt;&lt;br /&gt;　/// 读取文本文件&lt;br /&gt;　/// &amp;lt;/summary&amp;gt;&lt;br /&gt;　private void ReadFromTxtFile()&lt;br /&gt;　{&lt;br /&gt;　 if(filePath.PostedFile.FileName != "")&lt;br /&gt;　 {&lt;br /&gt;　 txtFilePath =filePath.PostedFile.FileName;&lt;br /&gt;　 fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".")+1,3);&lt;br /&gt;　&lt;br /&gt;　 if(fileExtName !="txt" &amp;amp;&amp;amp; fileExtName != "TXT")&lt;br /&gt;　 {&lt;br /&gt;　 Response.Write("请选择文本文件");&lt;br /&gt;　 }&lt;br /&gt;　 else&lt;br /&gt;　 {&lt;br /&gt;　 StreamReader fileStream = new StreamReader(txtFilePath,Encoding.Default);&lt;br /&gt;　 txtContent.Text = fileStream.ReadToEnd();&lt;br /&gt;　 fileStream.Close();&lt;br /&gt;　 }&lt;br /&gt;　 }&lt;br /&gt;　 }&lt;br /&gt;二．获取文件列表&lt;br /&gt;/**//// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 获取文件列表&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;private void GetFileList()&lt;br /&gt;{&lt;br /&gt;string strCurDir,FileName,FileExt;&lt;br /&gt;&lt;br /&gt;/**////文件大小&lt;br /&gt;long FileSize;&lt;br /&gt;&lt;br /&gt;/**////最后修改时间;&lt;br /&gt;DateTime FileModify;&lt;br /&gt;&lt;br /&gt;/**////初始化&lt;br /&gt;if(!IsPostBack)&lt;br /&gt;{&lt;br /&gt;/**////初始化时,默认为当前页面所在的目录&lt;br /&gt;strCurDir = Server.MapPath(".");&lt;br /&gt;lblCurDir.Text = strCurDir;&lt;br /&gt;txtCurDir.Text = strCurDir;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;strCurDir = txtCurDir.Text;&lt;br /&gt;txtCurDir.Text = strCurDir;&lt;br /&gt;lblCurDir.Text = strCurDir;&lt;br /&gt;}&lt;br /&gt;FileInfo fi;&lt;br /&gt;DirectoryInfo dir;&lt;br /&gt;TableCell td;&lt;br /&gt;TableRow tr;&lt;br /&gt;tr = new TableRow();&lt;br /&gt;&lt;br /&gt;/**////动态添加单元格内容&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl("文件名"));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl("文件类型"));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl("文件大小"));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl("最后修改时间"));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;&lt;br /&gt;tableDirInfo.Rows.Add(tr);&lt;br /&gt;&lt;br /&gt;/**////针对当前目录建立目录引用对象&lt;br /&gt;DirectoryInfo dirInfo = new DirectoryInfo(txtCurDir.Text);&lt;br /&gt;&lt;br /&gt;/**////循环判断当前目录下的文件和目录&lt;br /&gt;foreach(FileSystemInfo fsi in dirInfo.GetFileSystemInfos())&lt;br /&gt;{&lt;br /&gt;FileName = "";&lt;br /&gt;FileExt = "";&lt;br /&gt;FileSize = 0;&lt;br /&gt;&lt;br /&gt;/**////如果是文件&lt;br /&gt;if(fsi is FileInfo)&lt;br /&gt;{&lt;br /&gt;fi = (FileInfo)fsi;&lt;br /&gt;&lt;br /&gt;/**////取得文件名&lt;br /&gt;FileName = fi.Name;&lt;br /&gt;&lt;br /&gt;/**////取得文件的扩展名&lt;br /&gt;FileExt = fi.Extension;&lt;br /&gt;&lt;br /&gt;/**////取得文件的大小&lt;br /&gt;FileSize = fi.Length;&lt;br /&gt;&lt;br /&gt;/**////取得文件的最后修改时间&lt;br /&gt;FileModify = fi.LastWriteTime;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**////否则是目录&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;dir = (DirectoryInfo)fsi;&lt;br /&gt;&lt;br /&gt;/**////取得目录名&lt;br /&gt;FileName = dir.Name;&lt;br /&gt;&lt;br /&gt;/**////取得目录的最后修改时间&lt;br /&gt;FileModify = dir.LastWriteTime;&lt;br /&gt;&lt;br /&gt;/**////设置文件的扩展名为"文件夹"&lt;br /&gt;FileExt = "文件夹";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**////动态添加表格内容&lt;br /&gt;tr = new TableRow();&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl(FileName));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl(FileExt));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl(FileSize.ToString()+"字节"));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;td = new TableCell();&lt;br /&gt;td.Controls.Add(new LiteralControl(FileModify.ToString("yyyy-mm-dd hh:mm:ss")));&lt;br /&gt;tr.Cells.Add(td);&lt;br /&gt;tableDirInfo.Rows.Add(tr);&lt;br /&gt;}&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;三．读取日志文件&lt;br /&gt;/**//// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 读取日志文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;private void ReadLogFile()&lt;br /&gt;{&lt;br /&gt;/**////从指定的目录以打开或者创建的形式读取日志文件&lt;br /&gt;FileStream fs = new FileStream(Server.MapPath("upedFile")+"\\logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);&lt;/p&gt; &lt;p&gt;/**////定义输出字符串&lt;br /&gt;StringBuilder output = new StringBuilder();&lt;br /&gt;&lt;br /&gt;/**////初始化该字符串的长度为0&lt;br /&gt;output.Length = 0;&lt;br /&gt;&lt;br /&gt;/**////为上面创建的文件流创建读取数据流&lt;br /&gt;StreamReader read = new StreamReader(fs);&lt;br /&gt;&lt;br /&gt;/**////设置当前流的起始位置为文件流的起始点&lt;br /&gt;read.BaseStream.Seek(0, SeekOrigin.Begin);&lt;br /&gt;&lt;br /&gt;/**////读取文件&lt;br /&gt;while (read.Peek() &amp;gt; -1)&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;/**////取文件的一行内容并换行&lt;br /&gt;output.Append(read.ReadLine() + "\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**////关闭释放读数据流&lt;br /&gt;read.Close();&lt;br /&gt;&lt;br /&gt;/**////返回读到的日志文件内容&lt;br /&gt;return output.ToString();&lt;br /&gt;}&lt;br /&gt;四．写入日志文件&lt;/p&gt; &lt;p&gt;/**//// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 写入日志文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param &amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;private void WriteLogFile(string input)&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;/**////指定日志文件的目录&lt;br /&gt;string fname = Server.MapPath("upedFile") + "\\logfile.txt";&lt;br /&gt;/**////定义文件信息对象&lt;br /&gt;FileInfo finfo = new FileInfo(fname);&lt;/p&gt; &lt;p&gt;/**////判断文件是否存在以及是否大于2K&lt;br /&gt;if ( finfo.Exists &amp;amp;&amp;amp; finfo.Length &amp;gt; 2048 )&lt;br /&gt;{&lt;br /&gt;/**////删除该文件&lt;br /&gt;finfo.Delete();&lt;br /&gt;}&lt;br /&gt;/**////创建只写文件流&lt;br /&gt;using(FileStream fs = finfo.OpenWrite())&lt;br /&gt;{&lt;br /&gt;/**////根据上面创建的文件流创建写数据流&lt;br /&gt;StreamWriter w = new StreamWriter(fs);&lt;br /&gt;&lt;br /&gt;/**////设置写数据流的起始位置为文件流的末尾&lt;br /&gt;w.BaseStream.Seek(0, SeekOrigin.End);&lt;br /&gt;&lt;br /&gt;w.Write("\nLog Entry : ");&lt;br /&gt;&lt;br /&gt;/**////写入当前系统时间并换行&lt;br /&gt;w.Write("{0} {1} \r\n",DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());&lt;br /&gt;&lt;br /&gt;/**////写入日志内容并换行&lt;br /&gt;w.Write(input + "\n");&lt;br /&gt;&lt;br /&gt;/**////写入------------------------------------&amp;#8220;并换行&lt;br /&gt;w.Write("------------------------------------\n");&lt;br /&gt;&lt;br /&gt;/**////清空缓冲区内容，并把缓冲区内容写入基础流&lt;br /&gt;w.Flush();&lt;br /&gt;&lt;br /&gt;/**////关闭写数据流&lt;br /&gt;w.Close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;五．C#创建HTML文件&lt;br /&gt;/**//// &amp;lt;summary&amp;gt;&lt;br /&gt;/// 创建HTML文件&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;private void CreateHtmlFile()&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;/**////定义和html标记数目一致的数组&lt;br /&gt;string[] newContent = new string[5];&lt;br /&gt;StringBuilder strhtml = new StringBuilder();&lt;br /&gt;try&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;/**////创建StreamReader对象&lt;br /&gt;using (StreamReader sr = new StreamReader(Server.MapPath("createHTML") + "\\template.html"))&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;String oneline;&lt;br /&gt;&lt;br /&gt;/**////读取指定的HTML文件模板&lt;br /&gt;while ((oneline = sr.ReadLine()) != null)&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;strhtml.Append(oneline);&lt;br /&gt;}&lt;br /&gt;sr.Close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch(Exception err)&lt;br /&gt;{&lt;br /&gt;/**////输出异常信息&lt;br /&gt;Response.Write(err.ToString());&lt;br /&gt;}&lt;br /&gt;/**////为标记数组赋值&lt;br /&gt;newContent[0] = txtTitle.Text;//标题&lt;br /&gt;newContent[1] = "BackColor='#cccfff'";//背景色&lt;br /&gt;newContent[2] = "#ff0000";//字体颜色&lt;br /&gt;newContent[3] = "100px";//字体大小&lt;br /&gt;newContent[4] = txtContent.Text;//主要内容&lt;/p&gt; &lt;p&gt;/**////根据上面新的内容生成html文件&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;/**////指定要生成的HTML文件&lt;br /&gt;string fname = Server.MapPath("createHTML") +"\\" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";&lt;br /&gt;&lt;br /&gt;/**////替换html模版文件里的标记为新的内容&lt;br /&gt;for(int i=0;i &amp;lt; 5;i++)&lt;br /&gt;{&lt;br /&gt;strhtml.Replace("$htmlkey["+i+"]",newContent[i]);&lt;br /&gt;}&lt;br /&gt;/**////创建文件信息对象&lt;br /&gt;FileInfo finfo = new FileInfo(fname);&lt;br /&gt;&lt;br /&gt;/**////以打开或者写入的形式创建文件流&lt;br /&gt;using(FileStream fs = finfo.OpenWrite())&lt;br /&gt;{&lt;br /&gt;/**////根据上面创建的文件流创建写数据流&lt;br /&gt;StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));&lt;br /&gt;&lt;br /&gt;/**////把新的内容写到创建的HTML页面中&lt;br /&gt;sw.WriteLine(strhtml);&lt;br /&gt;sw.Flush();&lt;br /&gt;sw.Close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**////设置超级链接的属性&lt;br /&gt;hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html";&lt;br /&gt;hyCreateFile.NavigateUrl = "createHTML/"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";&lt;br /&gt;}&lt;br /&gt;catch(Exception err)&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;Response.Write (err.ToString());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;CreateDirectory方法的使用&lt;br /&gt;using System;&amp;nbsp;&lt;br /&gt;using System.IO;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;class Test&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;public static void Main()&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;// Specify the directory you want to manipulate.&amp;nbsp;&lt;br /&gt;string path = @"c:\MyDir";&amp;nbsp;&lt;br /&gt;&lt;br /&gt;try&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;// Determine whether the directory exists.&amp;nbsp;&lt;br /&gt;if (Directory.Exists(path))&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;Console.WriteLine("That path exists already.");&amp;nbsp;&lt;br /&gt;return;&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// Try to create the directory.&amp;nbsp;&lt;br /&gt;DirectoryInfo di = Directory.CreateDirectory(path);&amp;nbsp;&lt;br /&gt;Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));&amp;nbsp;&lt;br /&gt;&lt;br /&gt;// Delete the directory.&amp;nbsp;&lt;br /&gt;di.Delete();&amp;nbsp;&lt;br /&gt;Console.WriteLine("The directory was deleted successfully.");&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;catch (Exception e)&amp;nbsp;&lt;br /&gt;{&amp;nbsp;&lt;br /&gt;Console.WriteLine("The process failed: {0}", e.ToString());&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;finally {}&amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;}&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/cxy521/aggbug/2024645.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxy521/archive/2011/04/22/2024645.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2011/01/06/1928989.html</id><title type="text">JS四舍五入BUG解决</title><summary type="text">之前一直在用这个js自带的toFixed函数来进行四舍五入的操作，可是，在实际使用过程中却遇到了问题。比如varmoney=0.00542;//0.006; alert(Number(money).toFixed(2)); //0.00可以看出上面的结果是错误的，下面的方法通过巧妙的使用Math.round函数，完全可以解决数值很小时的精度问题。varmoney=0.00542;//0.006; alert(Number(money).toFixed(2)); functionround2(number,fractionDigits){ with(Math){ returnround(numb</summary><published>2011-01-06T09:05:00Z</published><updated>2011-01-06T09:05:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2011/01/06/1928989.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2011/01/06/1928989.html"/><content type="html">&lt;p&gt;之前一直在用这个js自带的toFixed函数来进行四舍五入的操作，可是，在实际使用过程中却遇到了问题。&lt;/p&gt;&lt;p&gt;比如&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="keyword"&gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;money=0.00542;&lt;/span&gt;&lt;span class="comment"&gt;&lt;font color="#008200"&gt;//0.006; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;alert(Number(money).toFixed(2)); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="comment"&gt;&lt;font color="#008200"&gt;//0.00&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;可以看出上面的结果是错误的，下面的方法通过巧妙的使用Math.round函数，完全可以解决数值很小时的精度问题。&lt;/p&gt;&lt;p&gt;&lt;span class="keyword"&gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;var&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;money=0.00542;&lt;/span&gt;&lt;span class="comment"&gt;&lt;font color="#008200"&gt;//0.006; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;alert(Number(money).toFixed(2)); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;function&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;round2(number,fractionDigits){ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;with&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;(Math){ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;strong&gt;&lt;font color="#7f0055"&gt;return&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;round(number*pow(10,fractionDigits))/pow(10,fractionDigits); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;alert(round2(money,2));&lt;/span&gt;&lt;span class="comment"&gt;&lt;font color="#008200"&gt;//0.01&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;round 方法 &lt;br /&gt;返回与给出的数值表达式最接近的整数。 &lt;br /&gt;&lt;br /&gt;Math.round(number) &lt;br /&gt;&lt;br /&gt;必选项 number 参数是要舍入到最接近整数的值。 &lt;br /&gt;&lt;br /&gt;说明 &lt;br /&gt;如果 number 的小数部分大于等于 0.5，返回值是大于 number 的最小整数。否则，round 返回小于等于 number 的最大整数。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxy521/aggbug/1928989.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxy521/archive/2011/01/06/1928989.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2011/01/06/1928979.html</id><title type="text">IIRF(Ionics Isapi Rewrite Filt er)实现在IIS 5/6上重写Url</title><summary type="text">IIS 7的URL Rewrite功能非常强大,可以通过Microsoft URL Rewrite Module来实现，可参看文章使用Microsoft URL Rewrite Module for IIS 7.0修改WEB.CONFIG即可实现*.HTML伪静态 无需修改应用程序映射。IIS 5/6的URL Rewrite也可以通过IIRF(Ionic's Isapi Rewrite Filter)来实现。IIRF(Ionic's Isapi Rewrite Filter)是一款开源的重写URL过滤器，类似于Apache的URL重写，基于VC8.0（可以用Visual Studio2005或</summary><published>2011-01-06T08:52:00Z</published><updated>2011-01-06T08:52:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2011/01/06/1928979.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2011/01/06/1928979.html"/><content type="html">&lt;h1 class="postTitle"&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="postBody"&gt;&lt;p&gt;IIS 7的URL Rewrite功能非常强大,可以通过Microsoft URL Rewrite Module来实现，可参看文章&lt;a href="http://www.cnblogs.com/lixyvip/archive/2009/03/02/1401651.html"&gt;使用Microsoft URL Rewrite Module for IIS 7.0修改WEB.CONFIG即可实现*.HTML伪静态 无需修改应用程序映射&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;IIS 5/6的URL Rewrite也可以通过IIRF(Ionic's Isapi Rewrite Filter)来实现。IIRF(Ionic's Isapi Rewrite Filter)是一款开源的重写URL过滤器，类似于Apache的URL重写，基于VC8.0（可以用Visual Studio2005或Visual C++ 2005 Express重新编译）开发。它可以运行在IIS5.0＋，支持ASP,ASP.NET,PHP等许多格式。相对比ASP.NET2.0自带的URL重写，具有更好的性能和许多我们所需要特性，重要的一点在于：它可以支持无扩展名的URL，让URL更加的方便我们记忆，IIRF能够在aspnet_isapi提前捕获我们所请求的URL进行处理，通过IIRF，我们可以直接跳aspnet_isapi.dll，要知道，这种方式在ASP.NET是无法实现的。IIRF跟ASP.NET重写URL一样，它也是基于正则的方式来匹配，具有LOG记录，请求的条件判断。&lt;/p&gt;&lt;p&gt;安装 &lt;br /&gt;IIRF安装需要我们手动操作来完成。到&lt;a title="http://www.codeplex.com/IIRF" href="http://www.codeplex.com/IIRF"&gt;http://www.codeplex.com/IIRF&lt;/a&gt; 下载程序：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;将IsapiRewrite4.dll, IsapiRewrite4.ini复制到c:\windows\system32\inetsrv(你也可以复制到其它适当的文件夹下面)。 &lt;br /&gt;IsapiRewrite4.ini是IIRF配置文件，每次该文件更改之后，IIRF会自动重新加载该文件，无需重启IIS来重新加载配置，如果您修改后INI文件后格式不正确，IIRF将会自动获取最后正确加载的配置文件。&lt;/li&gt;&lt;li&gt;打开IIS管理器,选择&amp;#8220;默认网站&amp;#8221;，右击&amp;#8220;属性&amp;#8221;，选择&amp;#8220;ISAPI筛选器&amp;#8221;，点击&amp;#8220;添加&amp;#8221;，输入筛选器名称：Ionic Rewriter，可执行文件选择上面复制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件，点&amp;#8220;确定&amp;#8221;。&lt;/li&gt;&lt;li&gt;重启IISADMIN service服务。（在计算机管理----windows服务里面）&lt;/li&gt;&lt;li&gt;完成。 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;日志 &lt;br /&gt;IIRF能够将INI配置文件加载，用户的URL请求记录都会保存到指定的日志文件里。因为它具有很大的性能开销，因此建议将它日志的记录等级设为0，只有 &lt;br /&gt;为了方便调试的时候时候，可以设置为5， &lt;br /&gt;RewriteLog &amp;lt;filename stub&amp;gt;&amp;nbsp; 保存的日志路径，如 c:\temp\iirfLog.out &lt;br /&gt;RewriteLogLevel {0,1,2,3,4,5} 日志的等级,默认值为0 &lt;br /&gt;0 &amp;#8211;不会记录日志 &lt;br /&gt;1- 少许的日志 &lt;br /&gt;2-&amp;nbsp; 比较多的日志 &lt;br /&gt;3- 比较详细的日志 &lt;br /&gt;4- 详细的日志（4），并会跟踪server variable和替换的字符串。 &lt;br /&gt;5- 详细的日志（5），包括日志文件更改的事件，建议方便调试的时候使用 &lt;br /&gt;正则 &lt;br /&gt;正则的语法跟.NET一样，只不过是格式不一样而已。所以我也不在详细介绍。具体有关正则的说明大家可以用GOOGLE搜索。 &lt;br /&gt;格式： &lt;br /&gt;RewriteRule &amp;lt;url-pattern&amp;gt; &amp;lt;replacement-string&amp;gt;&amp;nbsp;&amp;nbsp; [&amp;lt;modifiers&amp;gt;] &lt;br /&gt;url-pattern：匹配的正则表达式(必需) &lt;br /&gt;replacement-string:要替换的字符串（必需） &lt;br /&gt;modifiers：有关对RewriteRule的操作标记。可选选项。在下面我会说明 &lt;br /&gt;默认下IIRF的url-pattern，replacement-string正则的前面已经带了主机头的。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/cxy521/aggbug/1928979.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxy521/archive/2011/01/06/1928979.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2010/05/17/1737441.html</id><title type="text">Repeater控件实现左侧快捷菜单</title><summary type="text">&lt;head runat="server"&gt; &lt;title&gt;无标题页&lt;/title&gt;&lt;style type="text/css"&gt;h3{height:28px;line-height:28px;width:182px;background-image:url(Images/menu_bg1.gif);background-repeat:no-repea...</summary><published>2010-05-17T08:25:00Z</published><updated>2010-05-17T08:25:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2010/05/17/1737441.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2010/05/17/1737441.html"/><content type="text">&lt;head runat="server"&gt; &lt;title&gt;无标题页&lt;/title&gt;&lt;style type="text/css"&gt;h3{height:28px;line-height:28px;width:182px;background-image:url(Images/menu_bg1.gif);background-repeat:no-repea...</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2009/11/21/1607584.html</id><title type="text">JS和CS互访(非常经典)</title><summary type="text">.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数?问题1答案如下： javaScript函数中执行C#代码中的函数： 方法一：1、首先建立一个按钮，在后台将调用或处理的内容写入button_click中; 2、在前台写一个js函数，内容为document.ge...</summary><published>2009-11-21T06:00:00Z</published><updated>2009-11-21T06:00:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2009/11/21/1607584.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2009/11/21/1607584.html"/><content type="text">.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数?问题1答案如下： javaScript函数中执行C#代码中的函数： 方法一：1、首先建立一个按钮，在后台将调用或处理的内容写入button_click中; 2、在前台写一个js函数，内容为document.ge...</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2009/09/17/1568297.html</id><title type="text">[转]IList及泛型集合类转换DataTable</title><summary type="text">[原文]http://hi.baidu.com/blueyund/blog/item/e1d108f7dc51cb2b720eec9b.html/// &lt;summary&gt; /// 将集合类转换成DataTable /// &lt;/summary&gt; /// &lt;param name="list"&gt;集合&lt;/param&gt; /// &lt;returns&gt;&amp;...</summary><published>2009-09-17T02:27:00Z</published><updated>2009-09-17T02:27:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2009/09/17/1568297.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2009/09/17/1568297.html"/><content type="text">[原文]http://hi.baidu.com/blueyund/blog/item/e1d108f7dc51cb2b720eec9b.html/// &lt;summary&gt; /// 将集合类转换成DataTable /// &lt;/summary&gt; /// &lt;param name="list"&gt;集合&lt;/param&gt; /// &lt;returns&gt;&amp;...</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2009/09/02/1558944.html</id><title type="text">关于sqlserver2005中的bit数据类型</title><summary type="text">关于sqlserver2005中的bit数据类型关于sqlserver2005中的bit数据类型bit值类型可以取值为 1、0 或 NULL 的整数数据类型。当你直接打开表向这一列中插入数据是就需要插入true或false当你用sql语句插入数据的时候该列就插入0或1当你在查询分析其中用select语句读取这个表中的这一列数据时该列数据显示的是0或1当你在C#中调用sqlserver2005存储过...</summary><published>2009-09-02T09:42:00Z</published><updated>2009-09-02T09:42:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2009/09/02/1558944.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2009/09/02/1558944.html"/><content type="text">关于sqlserver2005中的bit数据类型关于sqlserver2005中的bit数据类型bit值类型可以取值为 1、0 或 NULL 的整数数据类型。当你直接打开表向这一列中插入数据是就需要插入true或false当你用sql语句插入数据的时候该列就插入0或1当你在查询分析其中用select语句读取这个表中的这一列数据时该列数据显示的是0或1当你在C#中调用sqlserver2005存储过...</content></entry><entry><id>http://www.cnblogs.com/cxy521/archive/2009/08/18/1549121.html</id><title type="text">C#小写转大写</title><summary type="text">#region 小写转大写 private string GetNumToUpper(decimal Money) { string NumList = ""; string RmbList = ""; int NumLen = 0; int NumChar = 0; string N1 = ""; string N2 = ""; decimal Mnu = 0; int I =...</summary><published>2009-08-18T08:57:00Z</published><updated>2009-08-18T08:57:00Z</updated><author><name>古道飘零客</name><uri>http://www.cnblogs.com/cxy521/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxy521/archive/2009/08/18/1549121.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxy521/archive/2009/08/18/1549121.html"/><content type="text">#region 小写转大写 private string GetNumToUpper(decimal Money) { string NumList = ""; string RmbList = ""; int NumLen = 0; int NumChar = 0; string N1 = ""; string N2 = ""; decimal Mnu = 0; int I =...</content></entry></feed>
