C#处理文本文件浅析

开发 后端
这里介绍用C#处理文本文件的完整源程序代码,本文虽然只是介绍了用C#处理文本文件,但其实对C#处理其他文件也有很多的参考价值。

本文向大家介绍C#处理文本文件,可能好多人还不知道C#处理文本文件,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

用C#处理文本文件的完整源程序代码(control.cs),现在就可以方便的得到用C#处理文本文件的一个完整的源程序,具体如下:

  1. using System ;  
  2. using System.Drawing ;  
  3. using System.Collections ;  
  4. using System.ComponentModel ;  
  5. using System.Windows.Forms ;  
  6. using System.Data ;  
  7. using System.IO ;  
  8. using System.Drawing.Printing ;  
  9. public class Form1 : Form  
  10. {  
  11. private RichTextBox richTextBox1 ;  
  12. private Button button1 ;  
  13. private Button button2 ;  
  14. private Button button3 ;  
  15. private Button button4 ;  
  16. private Button button5 ;  
  17. private OpenFileDialog openFileDialog1 ;  
  18. private SaveFileDialog saveFileDialog1 ;  
  19. private PrintDialog printDialog1 ;  
  20. private PrintDocument ThePrintDocument ;  
  21. private PrintPreviewDialog printPreviewDialog1 ;  
  22. private StringReader myReader ;  
  23. private System.ComponentModel.Container components = null ;  
  24.  
  25. public Form1 ( )  
  26. {  
  27. //初始化窗体中的各个组件  
  28. InitializeComponent ( ) ;  
  29. }  
  30. //清除程序中使用多的资源  
  31. protected override void Dispose ( bool disposing )  
  32. {  
  33. if ( disposing )  
  34. {  
  35. if ( components != null )  
  36. {  
  37. components.Dispose ( ) ;  
  38. }  
  39. }  
  40. base.Dispose ( disposing ) ;  
  41. }  
  42. private void InitializeComponent ( )  
  43. {  
  44. richTextBox1 = new RichTextBox ( ) ;  
  45. button1 = new Button ( ) ;  
  46. button2 = new Button ( ) ;  
  47. button3 = new Button ( ) ;  
  48. button4 = new Button ( ) ;  
  49. button5 = new Button ( ) ;  
  50. saveFileDialog1 = new SaveFileDialog ( ) ;  
  51. openFileDialog1 = new OpenFileDialog ( ) ;  
  52. printPreviewDialog1 = new PrintPreviewDialog ( ) ;  
  53. printDialog1 = new PrintDialog ( ) ;  
  54. ThePrintDocument = new PrintDocument ( ) ;  
  55. ThePrintDocument.PrintPage += new PrintPageEventHandler 
    ( ThePrintDocument_PrintPage ) ;  
  56. SuspendLayout ( ) ;  
  57. richTextBox1.Anchor = AnchorStyles.None ;  
  58. richTextBox1.Name = "richTextBox1" ;  
  59. richTextBox1.Size = new Size ( 448 , 280 ) ;  
  60. richTextBox1.TabIndex = 0 ;  
  61. richTextBox1.Text = "" ;  
  62. button1.Anchor = AnchorStyles.None ;  
  63. button1.Location = new Point ( 41 , 289 ) ;  
  64. button1.Name = "button1" ;  
  65. button1.Size = new Size ( 48 , 30 ) ;  
  66. button1.TabIndex = 1 ;  
  67. button1.Text = "打开" ;  
  68. button1.Click += new System.EventHandler ( button1_Click ) ;  
  69. button2.Anchor = AnchorStyles.None ;  
  70. button2.Location = new Point ( 274 , 288 ) ;  
  71. button2.Name = "button2" ;  
  72. button2.Size = new Size ( 48 , 30 ) ;  
  73. button2.TabIndex = 4 ;  
  74. button2.Text = "预览" ;  
  75. button2.Click += new System.EventHandler ( button2_Click ) ;  
  76. button3.Anchor = AnchorStyles.None ;  
  77. button3.Location = new Point ( 108 , 288 ) ;  
  78. button3.Name = "button3" ;  
  79. button3.Size = new Size ( 48 , 30 ) ;  
  80. button3.TabIndex = 2 ;  
  81. button3.Text = "保存" ;  
  82. button3.Click += new System.EventHandler ( button3_Click ) ;  
  83. button4.Anchor = AnchorStyles.None ;  
  84. button4.Location = new Point ( 174 , 288 ) ;  
  85. button4.Name = "button4" ;  
  86. button4.Size = new Size ( 80 , 30 ) ;  
  87. button4.TabIndex = 3 ;  
  88. button4.Text = "打印机设置" ;  
  89. button4.Click += new System.EventHandler ( button4_Click ) ;  
  90. button5.Anchor = AnchorStyles.None ;  
  91. button5.Location = new Point ( 345 , 288 ) ;  
  92. button5.Name = "button5" ;  
  93. button5.Size = new Size ( 48 , 30 ) ;  
  94. button5.TabIndex = 5 ;  
  95. button5.Text = "打印" ;  
  96. button5.Click += new System.EventHandler ( button5_Click ) ;  
  97. saveFileDialog1.DefaultExt = "*.txt" ;  
  98. saveFileDialog1.FileName = "file.txt" ;  
  99. saveFileDialog1.InitialDirectory = "c:\\" ;  
  100. saveFileDialog1.Title = "另存为!" ;  
  101. openFileDialog1.DefaultExt = "*.txt" ;  
  102. openFileDialog1.FileName = "file.txt" ;  
  103. openFileDialog1.InitialDirectory = "c:\\" ;  
  104. openFileDialog1.Title = "打开文本文件!" ;  
  105. AutoScaleBaseSize = new Size ( 6 , 14 ) ;  
  106. ClientSize = new Size ( 448 , 325 ) ;  
  107. this.Controls.Add ( button1 ) ;  
  108. this.Controls.Add ( button2 ) ;  
  109. this.Controls.Add ( button3 ) ;  
  110. this.Controls.Add ( button4 ) ;  
  111. this.Controls.Add ( button5 ) ;  
  112. this.Controls.Add ( richTextBox1 ) ;  
  113.  
  114. this.MaximizeBox = false ;  
  115. this.Name = "Form1" ;  
  116. this.Text = "C#来操作文本文件" ;  
  117. this.ResumeLayout ( false ) ;  
  118. }  
  119. static void Main ( )  
  120. {  
  121. Application.Run ( new Form1 ( ) ) ;  
  122. }  
  123.  
  124. private void button1_Click ( object sender , System.EventArgs e )  
  125. {  
  126. try  
  127. {  
  128. if ( openFileDialog1.ShowDialog ( ) == DialogResult.OK )  
  129. {  
  130. FileStream fs = new FileStream ( openFileDialog1.FileName, 
    FileMode.Open , FileAccess.Read ) ;  
  131. StreamReader m_streamReader = new StreamReader ( fs ) ;  
  132. //使用StreamReader类来读取文件  
  133. m_streamReader.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ;  
  134. // 从数据流中读取每一行,直到文件的***一行,并在richTextBox1中显示出内容  
  135. this.richTextBox1.Text = "" ;  
  136. string strLine = m_streamReader.ReadLine ( ) ;  
  137. while ( strLine != null )  
  138. {  
  139. this.richTextBox1.Text += strLine + "\n" ;  
  140. strLine = m_streamReader.ReadLine ( ) ;  
  141. }  
  142. //关闭此StreamReader对象  
  143. m_streamReader.Close ( ) ;  
  144. }  
  145. }  
  146. catch ( Exception em )  
  147. {  
  148. Console.WriteLine ( em.Message.ToString ( ) ) ;  
  149. }  
  150.  
  151. }  
  152.  
  153. private void button3_Click ( object sender , System.EventArgs e )  
  154. {  
  155. try  
  156. {  
  157. //获得另存为的文件名称  
  158. if ( saveFileDialog1.ShowDialog ( ) == DialogResult.OK )  
  159. {  
  160. //创建一个文件流,用以写入或者创建一个StreamWriter  
  161. FileStream fs = new FileStream ( @saveFileDialog1.FileName, 
    FileMode.OpenOrCreate , FileAccess.Write ) ;  
  162. StreamWriter m_streamWriter = new StreamWriter ( fs ) ;  
  163. m_streamWriter.Flush ( ) ;  
  164.  
  165. // 使用StreamWriter来往文件中写入内容  
  166. m_streamWriter.BaseStream.Seek ( 0 , SeekOrigin.Begin ) ;  
  167. // 把richTextBox1中的内容写入文件  
  168. m_streamWriter.Write ( richTextBox1.Text ) ;  
  169. //关闭此文件  
  170. m_streamWriter.Flush ( ) ;  
  171. m_streamWriter.Close ( ) ;  
  172. }  
  173. }  
  174. catch ( Exception em )  
  175. {  
  176. Console.WriteLine ( em.Message.ToString ( ) ) ;  
  177. }  
  178. }  
  179.  
  180. private void button4_Click ( object sender , System.EventArgs e )  
  181. {  
  182. printDialog1.Document = ThePrintDocument ;  
  183. printDialog1.ShowDialog ( ) ;  
  184. }  
  185. //预览打印文档  
  186. private void button2_Click ( object sender , System.EventArgs e )  
  187. {  
  188. try  
  189. {  
  190. string strText = richTextBox1.Text ;  
  191. myReader = new StringReader ( strText ) ;  
  192. PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog ( ) ;  
  193. printPreviewDialog1.Document = ThePrintDocument;  
  194. printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D;  
  195. printPreviewDialog1.ShowDialog ( ) ;  
  196. }  
  197. catch ( Exception exp )  
  198. {  
  199. Console.WriteLine ( exp.Message.ToString ( ) ) ;  
  200. }  
  201. }  
  202. //打印richTextBox1中的内容  
  203. private void button5_Click ( object sender , System.EventArgs e )  
  204. {  
  205. printDialog1.Document = ThePrintDocument ;  
  206. string strText = richTextBox1.Text ;  
  207. myReader = new StringReader ( strText ) ;  
  208. if ( printDialog1.ShowDialog ( ) == DialogResult.OK )  
  209. {  
  210. ThePrintDocument.Print ( ) ;  
  211. }  
  212. }  
  213. protected void ThePrintDocument_PrintPage ( object sender , PrintPageEventArgs ev )  
  214. {  
  215. float linesPerPage = 0 ;  
  216. float yPosition = 0 ;  
  217. int count = 0 ;  
  218. float leftMargin = ev.MarginBounds.Left ;  
  219. float topMargin = ev.MarginBounds.Top ;  
  220. string line = null ;  
  221. Font printFont = richTextBox1.Font ;  
  222. SolidBrush myBrush = new SolidBrush ( Color.Black ) ;  
  223. //计算每一页打印多少行  
  224. linesPerPage = ev.MarginBounds.Height / printFont.GetHeight ( ev.Graphics ) ;  
  225. //重复使用StringReader对象 ,打印出richTextBox1中的所有内容  
  226. while ( count < linesPerPage && ( ( line = myReader.ReadLine ( ) ) != null ) )  
  227. {  
  228. // 计算出要打印的下一行所基于页面的位置  
  229. yPosition = topMargin + ( count * printFont.GetHeight ( ev.Graphics ) ) ;  
  230. // 打印出richTextBox1中的下一行内容  
  231. ev.Graphics.DrawString ( line , printFont , myBrush , 
    leftMargin , yPosition , new StringFormat ( ) ) ;  
  232. count++ ;  
  233. }  
  234. // 判断如果还要下一页,则继续打印  
  235. if ( line != null )  
  236. ev.HasMorePages = true ;  
  237. else  
  238. ev.HasMorePages = false ;  
  239. myBrush.Dispose ( ) ;  
  240. }  

本文虽然只是介绍了用C#处理文本文件,但其实对C#处理其他文件也有很多的参考价值,这是因为在名字空间"System.IO"中定义的用以处理其他文件的类的结构和用以处理文本文件的类的结构有很多是相同的。希望本文对你用C#进行文件方面的编程有所帮助。

【编辑推荐】

  1. C# this关键字详解
  2. C#调用析构方法详解
  3. C#释放托管资源简单描述
  4. C#单路代理简单分析
  5. C#文法产生式概述
责任编辑:佚名 来源: 博客园
相关推荐

2009-09-02 19:08:03

C#实现读取文本文件

2009-08-06 18:33:45

C#处理文本文件

2009-08-19 17:44:15

C#操作文本文件

2009-08-20 10:17:27

C#操作文本文件

2009-08-20 09:15:20

C#操作文本文件

2009-08-12 17:59:48

C#读取文本文

2009-08-26 11:53:56

C#打印文本文件

2009-09-04 15:56:35

写入文本文件

2009-08-20 09:58:06

C#操作文本文件

2015-06-17 14:28:15

Java查询处理方法

2009-08-20 09:26:14

C#操作文本文件

2009-08-12 17:42:57

C#读文本文件

2010-02-01 14:26:50

C++读写文本文件

2010-04-30 17:38:31

Unix文本

2021-11-29 09:46:11

FileReaderJava开发

2010-01-15 10:05:35

VB.NET文件对象

2014-03-11 10:11:33

Linux命令more命令文本文件

2009-08-12 15:20:21

C#事件处理

2023-03-31 23:31:06

.go文本文件

2022-09-29 10:01:05

Go编程语言文本文件
点赞
收藏

51CTO技术栈公众号