C#学习:处理文本

 C#处理文本文件的一些重要环节: 

(1).如何读取文本文件内容: 

在本文介绍的程序中,是把读取的文本文件,用一个richTextBox组件显示出来。要读取文本文件,必须使用到"StreamReader"类,这个类是由名字空间"System.IO"中定义的。通过"StreamReader"类的"ReadLine  (  )"方法,就可以读取打开数据流当前行的数据了。下面代码实现的功能就是读取"C:file.txt"并在richTextBox1组件中显示出来: 

    FileStream  fs  =  new  FileStream  (  "C:/file.txt"    ,  FileMode.Open  ,  FileAccess.Read  )  ;
        StreamReader  m_streamReader  =  new  StreamReader  (  fs  )  ; 
    //使用StreamReader类来读取文件
    m_streamReader.BaseStream.Seek  (  0  ,  SeekOrigin.Begin  )  ;
        //  从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容
        this.richTextBox1.Text  =  ""  ;
        string  strLine  =  m_streamReader.ReadLine  (  )  ;
        while  (  strLine  !=  null  )
        {
            this.richTextBox1.Text  +=  strLine  +  " "  ;
            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
    FileStream  fs  =  new  FileStream  (  "C/file.txt"    ,  FileMode.OpenOrCreate  ,  FileAccess.Write  )  ;
        StreamWriter  m_streamWriter  =  new  StreamWriter  (  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中显示的内容,通过打印预览对话框显示出来: 

string  strText  =  richTextBox1.Text  ;
    StringReader  myReader  =  new  StringReader  (  strText  )  ;
    PrintPreviewDialog  printPreviewDialog1  =  new  PrintPreviewDialog  (  )  ;
    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中的内容: 

            float  linesPerPage  =  0  ;
                float  yPosition  =  0  ;
                int  count  =  0  ;
                float  leftMargin  =  ev.MarginBounds.Left  ;
                float  topMargin  =  ev.MarginBounds.Top  ;
                string  line  =  null  ;
                Font  printFont  =  richTextBox1.Font  ;
                SolidBrush  myBrush  =  new  SolidBrush  (  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  ,  new  StringFormat  (  )  )  ;
    count++  ;
                }
                //  判断如果还要下一页,则继续打印
                if  (  line  !=  null  )
    ev.HasMorePages  =  true  ;
                else
    ev.HasMorePages  =  false  ;
                myBrush.Dispose  (  )  ;   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值