C#处理文本文件TXT实例详解
本文实例讲述了c#处理文本文件txt的方法。分享给大家供大家参考。具体分析如下:
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"中,如果不存在,则创建此文件,然后在写入文本数据。
//创建一个文件流,用以写入或者创建一个streamwriter filestreamfs=newfilestream("c\\file.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(count<linesperpage&&((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; else ev.hasmorepages=false; mybrush.dispose();
注释:由于在上述的代码中省掉了这些类所对于地名字空间,所以要想成功的编译和运行上述代码,就要在程序头部要导入所使用的名字空间。
希望本文所述对大家的c#程序设计有所帮助。