欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#处理文本文件TXT实例详解

程序员文章站 2023-12-14 14:45:40
本文实例讲述了c#处理文本文件txt的方法。分享给大家供大家参考。具体分析如下: 1. 如何读取文本文件内容: 这里介绍的程序中,是把读取的文本文件,用一个richte...

本文实例讲述了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#程序设计有所帮助。

上一篇:

下一篇: