C#处理文本文件.doc_第1页
C#处理文本文件.doc_第2页
C#处理文本文件.doc_第3页
C#处理文本文件.doc_第4页
C#处理文本文件.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#处理文本文件 作者:未知 时间:2005-08-07 21:12 出处:编程爱好者网站 责编:My FAQ 摘要:C#处理文本文件文本文件是一种常用的文件格式,所以如何处理文本文件也就成为编程的一个重点。本文就来探讨一下用C是如何来处理文本文件。其内容重点就是如何读取文本文件内容、如何改变文本文件的内容,以及如何用C来实现对读取后的文本文件的打印预览和打印。一本文程序设计和运行的软件环境:(1).微软公司视窗2000服务器版(2).NetFrameWorkSDKBeta2二C处理文本文件的一些重要环节:(1).如何读取文本文件内容:在本文介绍的程序中,是把读取的文本文件,用一个richTextBox组件显示出来。要读取文本文件,必须使用到StreamReader类,这个类是由名字空间System.IO中定义的。通过StreamReader类的ReadLine()方法,就可以读取打开数据流当前行的数据了。下面代码实现的功能就是读取C:file.txt并在richTextBox1组件中显示出来:FileStreamfs=newFileStream(C:file.txt,FileMode.Open,FileAccess.Read);StreamReaderm_streamReader=newStreamReader(fs);/使用StreamReader类来读取文件m_streamReader.BaseStream.Seek(0,SeekOrigin.Begin);/从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容this.richTextBox1.Text=;stringstrLine=m_streamReader.ReadLine();while(strLine!=null)this.richTextBox1.Text+=strLine+n;strLine=m_streamReader.ReadLine();/关闭此StreamReader对象m_streamReader.Close();(2).如何改变文本文件中数据内容:在本文介绍的程序中,改变文本文件数据内容的功能是通过改变richTextBox1中的内容来实现的,当richTextBox1这的内容改变后,按动另存为,就把richTextBox1中内容存储到指定的文本文件中了。要想改变文本文件内容,要使用到StreamWriter类,这个类和StreamReader一样,都是由System.IO名字空间来定义的。通过StreamWriter类的Write()方法,就可以轻松实现文本文件内容的更改了。下面代码的功能是:如果C盘存在file.txt,则把richTextBox1中的内容写入到file.txt中,如果不存在,则创建此文件,然后在写入文本数据。/创建一个文件流,用以写入或者创建一个StreamWriterFileStreamfs=newFileStream(Cfile.txt,FileMode.OpenOrCreate,FileAccess.Write);StreamWriterm_streamWriter=newStreamWriter(fs);m_streamWriter.Flush();/使用StreamWriter来往文件中写入内容m_streamWriter.BaseStream.Seek(0,SeekOrigin.Begin);/把richTextBox1中的内容写入文件m_streamWriter.Write(richTextBox1.Text);/关闭此文件m_streamWriter.Flush();m_streamWriter.Close();从上面这二个代码可以,写入数据比起读取数据要显得容易些。(3).如何实现打印预览:打印预览是通过打印预览对话框来实现的,实现对读取得文本文件的打印预览,最为重要的就是要通知打印预览对话框所要预览的文件的内容。下面代码就是把richTextBox1中显示的内容,通过打印预览对话框显示出来:stringstrText=richTextBox1.Text;StringReadermyReader=newStringReader(strText);PrintPreviewDialogprintPreviewDialog1=newPrintPreviewDialog();printPreviewDialog1.Document=ThePrintDocument;printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D;printPreviewDialog1.ShowDialog();(4).如何打印文件:在名字空间System.Drawing.Printing中定义了一个类PrintDocument,通过调用此类的Print方法就可以触发在此名字空间中封装的另外一个事件PrintPage。在此事件中设定要打印的文档内容,从而实现队文本文件的打印操作。下面代码是调用PrintDocument的Print方法,和调用事件PrintPage来打印richTextBox1中的内容:ThePrintDocument.Print();/其中ThePrintDocument是PrintDocument类的一个对象下列代码是设定打印内容即打印richTextBox1中的内容:floatlinesPerPage=0;floatyPosition=0;intcount=0;floatleftMargin=ev.MarginBounds.Left;floattopMargin=ev.MarginBounds.Top;stringline=null;FontprintFont=richTextBox1.Font;SolidBrushmyBrush=newSolidBrush(Color.Black);/计算每一页打印多少行linesPerPage=ev.MarginBounds.Height/printFont.GetHeight(ev.Graphics);/重复使用StringReader对象,打印出richTextBox1中的所有内容while(countlinesPerPage&(line=myReader.ReadLine()!=null)/计算出要打印的下一行所基于页面的位置yPosition=topMargin+(count*printFont.GetHeight(ev.Graphics);/打印出richTextBox1中的下一行内容ev.Graphics.DrawString(line,printFont,myBrush,leftMargin,yPosition,newStringFormat();count+;/判断如果还要下一页,则继续打印if(line!=null)ev.HasMorePages=true;elseev.HasMorePages=false;myBrush.Dispose();注释:由于在上述的代码中省掉了这些类所对于地名字空间,所以要想成功的编译和运行上述代码,就要在程序头部要导入所使用的名字空间。三用C处理文本文件的完整源程序代码(control.cs):掌握了上面这些关键步骤,就可以方便的得到用C来处理文本文件的一个完整的源程序,具体如下:usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;usingSystem.IO;usingSystem.Drawing.Printing;publicclassForm1:FormprivateRichTextBoxrichTextBox1;privateButtonbutton1;privateButtonbutton2;privateButtonbutton3;privateButtonbutton4;privateButtonbutton5;privateOpenFileDialogopenFileDialog1;privateSaveFileDialogsaveFileDialog1;privatePrintDialogprintDialog1;privatePrintDocumentThePrintDocument;privatePrintPreviewDialogprintPreviewDialog1;privateStringReadermyReader;privateSystem.ComponentModel.Containercomponents=null;publicForm1()/初始化窗体中的各个组件InitializeComponent();/清除程序中使用多的资源protectedoverridevoidDispose(booldisposing)if(disposing)if(components!=null)components.Dispose();base.Dispose(disposing);privatevoidInitializeComponent()richTextBox1=newRichTextBox();button1=newButton();button2=newButton();button3=newButton();button4=newButton();button5=newButton();saveFileDialog1=newSaveFileDialog();openFileDialog1=newOpenFileDialog();printPreviewDialog1=newPrintPreviewDialog();printDialog1=newPrintDialog();ThePrintDocument=newPrintDocument();ThePrintDocument.PrintPage+=newPrintPageEventHandler(ThePrintDocument_PrintPage);SuspendLayout();richTextBox1.Anchor=AnchorStyles.None;richTextBox1.Name=richTextBox1;richTextBox1.Size=newSize(448,280);richTextBox1.TabIndex=0;richTextBox1.Text=;button1.Anchor=AnchorStyles.None;button1.Location=newPoint(41,289);button1.Name=button1;button1.Size=newSize(48,30);button1.TabIndex=1;button1.Text=打开;button1.Click+=newSystem.EventHandler(button1_Click);button2.Anchor=AnchorStyles.None;button2.Location=newPoint(274,288);button2.Name=button2;button2.Size=newSize(48,30);button2.TabIndex=4;button2.Text=预览;button2.Click+=newSystem.EventHandler(button2_Click);button3.Anchor=AnchorStyles.None;button3.Location=newPoint(108,288);button3.Name=button3;button3.Size=newSize(48,30);button3.TabIndex=2;button3.Text=保存;button3.Click+=newSystem.EventHandler(button3_Click);button4.Anchor=AnchorStyles.None;button4.Location=newPoint(174,288);button4.Name=button4;button4.Size=newSize(80,30);button4.TabIndex=3;button4.Text=打印机设置;button4.Click+=newSystem.EventHandler(button4_Click);button5.Anchor=AnchorStyles.None;button5.Location=newPoint(345,288);button5.Name=button5;button5.Size=newSize(48,30);button5.TabIndex=5;button5.Text=打印;button5.Click+=newSystem.EventHandler(button5_Click);saveFileDialog1.DefaultExt=*.txt;saveFileDialog1.FileName=file.txt;saveFileDialog1.InitialDirectory=c:;saveFileDialog1.Title=另存为!;openFileDialog1.DefaultExt=*.txt;openFileDialog1.FileName=file.txt;openFileDialog1.InitialDirectory=c:;openFileDialog1.Title=打开文本文件!;AutoScaleBaseSize=newSize(6,14);ClientSize=newSize(448,325);this.Controls.Add(button1);this.Controls.Add(button2);this.Controls.Add(button3);this.Controls.Add(button4);this.Controls.Add(button5);this.Controls.Add(richTextBox1);this.MaximizeBox=false;this.Name=Form1;this.Text=C来操作文本文件;this.ResumeLayout(false);staticvoidMain()Application.Run(newForm1();privatevoidbutton1_Click(objectsender,System.EventArgse)tryif(openFileDialog1.ShowDialog()=DialogResult.OK)FileStreamfs=newFileStream(openFileDialog1.FileName,FileMode.Open,FileAccess.Read);StreamReaderm_streamReader=newStreamReader(fs);/使用StreamReader类来读取文件m_streamReader.BaseStream.Seek(0,SeekOrigin.Begin);/从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容this.richTextBox1.Text=;stringstrLine=m_streamReader.ReadLine();while(strLine!=null)this.richTextBox1.Text+=strLine+n;strLine=m_streamReader.ReadLine();/关闭此StreamReader对象m_streamReader.Close();catch(Exceptionem)Console.WriteLine(em.Message.ToString();privatevoidbutton3_Click(objectsender,System.EventArgse)try/获得另存为的文件名称if(saveFileDialog1.ShowDialog()=DialogResult.OK)/创建一个文件流,用以写入或者创建一个StreamWriterFileStreamfs=newFileStream(saveFileDialog1.FileName,FileMode.OpenOrCreate,FileAccess.Write);StreamWriterm_streamWriter=newStreamWriter(fs);m_streamWriter.Flush();/使用StreamWriter来往文件中写入内容m_streamWriter.BaseStream.Seek(0,SeekOrigin.Begin);/把richTextBox1中的内容写入文件m_streamWriter.Write(richTextBox1.Text);/关闭此文件m_streamWriter.Flush();m_streamWriter.Close();catch(Exceptionem)Console.WriteLine(em.Message.ToString();privatevoidbutton4_Click(objectsender,System.EventArgse)printDialog1.Document=ThePrintDocument;printDialog1.ShowDialog();/预览打印文档privatevoidbutton2_Click(objectsender,System.EventArgse)trystringstrText=richTextBox1.Text;myReader=newStringReader(strText);PrintPreviewDialogprintPreviewDialog1=newPrintPreviewDialog();printPreviewDialog1.Document=ThePrintDocument;printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D;printPreviewDialog1.ShowDialog();catch(Exceptionexp)Console.WriteLine(exp.Message.ToString();/打印richTextBox1中的内容privatevoidbutton5_Click(objectsender,System.EventArgse)printDialog1.Document=ThePrintDocument;stringstrText=richTextBox1.Text;myReader=newStringReader(strText);if(printDialog1.ShowDialog()=DialogResult.OK)ThePrintDoc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论