乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C#處理文本文件的常用操作(轉(zhuǎn))

       suweixin 2011-01-14
      C#處理文本文件的常用操作(轉(zhuǎn)) 收藏
          文本文件是一種常用的文件格式,所以如何處理文本文件也就成為編程的一個重點(diǎn)。本文就來探討一下用C#是如何來處理文本文件。其內(nèi)容重點(diǎn)就是如何讀取文本文件內(nèi)容、如何改變文本文件的內(nèi)容,以及如何用C#來實(shí)現(xiàn)對讀取后的文本文件的打印預(yù)覽和打印。 
      一.  本文程序設(shè)計(jì)和運(yùn)行的軟件環(huán)境: 
      (1).微軟公司視窗2000服務(wù)器版 
      (2)..Net  FrameWork  SDK  Beta  2 
      二.  C#處理文本文件的一些重要環(huán)節(jié): 
      (1).如何讀取文本文件內(nèi)容: 
      在本文介紹的程序中,是把讀取的文本文件,用一個richTextBox組件顯示出來。要讀取文本文件,必須使用到"StreamReader"類,這個類是由名字空間"System.IO"中定義的。通過"StreamReader"類的"ReadLine  (  )"方法,就可以讀取打開數(shù)據(jù)流當(dāng)前行的數(shù)據(jù)了。下面代碼實(shí)現(xiàn)的功能就是讀取"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  )  ;
              //  從數(shù)據(jù)流中讀取每一行,直到文件的最后一行,并在richTextBox1中顯示出內(nèi)容
              this.richTextBox1.Text  =  ""  ;
              string  strLine  =  m_streamReader.ReadLine  (  )  ;
              while  (  strLine  !=  null  )
              {
                  this.richTextBox1.Text  +=  strLine  +  "\n"  ;
                  strLine  =  m_streamReader.ReadLine  (  )  ;
              }
              //關(guān)閉此StreamReader對象
              m_streamReader.Close  (  )  ;   

      (2).如何改變文本文件中數(shù)據(jù)內(nèi)容: 
      在本文介紹的程序中,改變文本文件數(shù)據(jù)內(nèi)容的功能是通過改變richTextBox1中的內(nèi)容來實(shí)現(xiàn)的,當(dāng)richTextBox1這的內(nèi)容改變后,按動"另存為",就把richTextBox1中內(nèi)容存儲到指定的文本文件中了。要想改變文本文件內(nèi)容,要使用到"StreamWriter"類,這個類和"StreamReader"一樣,都是由"System.IO"名字空間來定義的。通過"StreamWriter"類的"Write  (  )"方法,就可以輕松實(shí)現(xiàn)文本文件內(nèi)容的更改了。下面代碼的功能是:如果"C"盤存在"file.txt",則把richTextBox1中的內(nèi)容寫入到"file.txt"中,如果不存在,則創(chuàng)建此文件,然后在寫入文本數(shù)據(jù)。 
          //創(chuàng)建一個文件流,用以寫入或者創(chuàng)建一個StreamWriter
          FileStream  fs  =  new  FileStream  (  "C\\file.txt"    ,  FileMode.OpenOrCreate  ,  FileAccess.Write  )  ;
              StreamWriter  m_streamWriter  =  new  StreamWriter  (  fs  )  ;
              m_streamWriter.Flush  (  )  ;
              //  使用StreamWriter來往文件中寫入內(nèi)容
              m_streamWriter.BaseStream.Seek  (  0  ,  SeekOrigin.Begin  )  ;
              //  把richTextBox1中的內(nèi)容寫入文件
              m_streamWriter.Write  (  richTextBox1.Text  )  ;
              //關(guān)閉此文件
              m_streamWriter.Flush  (  )  ;
              m_streamWriter.Close  (  )  ;   

      從上面這二個代碼可以,寫入數(shù)據(jù)比起讀取數(shù)據(jù)要顯得容易些。 
      (3).如何實(shí)現(xiàn)打印預(yù)覽: 
      打印預(yù)覽是通過打印預(yù)覽對話框來實(shí)現(xiàn)的,實(shí)現(xiàn)對讀取得文本文件的打印預(yù)覽,最為重要的就是要通知打印預(yù)覽對話框所要預(yù)覽的文件的內(nèi)容。下面代碼就是把richTextBox1中顯示的內(nèi)容,通過打印預(yù)覽對話框顯示出來: 
      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",通過調(diào)用此類的"Print"方法就可以觸發(fā)在此名字空間中封裝的另外一個事件"PrintPage"。在此事件中設(shè)定要打印的文檔內(nèi)容,從而實(shí)現(xiàn)隊(duì)文本文件的打印操作。下面代碼是調(diào)用"PrintDocument"的"Print"方法,和調(diào)用事件"PrintPage"來打印richTextBox1中的內(nèi)容: 
      ThePrintDocument.Print  (  )  ;//其中ThePrintDocument是"PrintDocument"類的一個對象 
      下列代碼是設(shè)定打印內(nèi)容即打印richTextBox1中的內(nèi)容: 
                  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  )  ;
                      //計(jì)算每一頁打印多少行 
                  linesPerPage  =  ev.MarginBounds.Height  /  printFont.GetHeight  (  ev.Graphics  )  ;
                      //重復(fù)使用StringReader對象  ,打印出richTextBox1中的所有內(nèi)容
                      while  (  count  <  linesPerPage  &&  (  (  line  =  myReader.ReadLine  (  )  )  !=  null  )  ) 
                  {
      //  計(jì)算出要打印的下一行所基于頁面的位置
          yPosition  =  topMargin  +  (  count  *  printFont.GetHeight  (  ev.Graphics  )  )  ;
          //  打印出richTextBox1中的下一行內(nèi)容
          ev.Graphics.DrawString  (  line  ,  printFont  ,  myBrush  ,  leftMargin  ,  yPosition  ,  new  StringFormat  (  )  )  ;
          count++  ;
                      }
                      //  判斷如果還要下一頁,則繼續(xù)打印
                      if  (  line  !=  null  )
          ev.HasMorePages  =  true  ;
                      else
          ev.HasMorePages  =  false  ;
                      myBrush.Dispose  (  )  ;   

      注釋:由于在上述的代碼中省掉了這些類所對于地名字空間,所以要想成功的編譯和運(yùn)行上述代碼,就要在程序頭部要導(dǎo)入所使用的名字空間。 
      三.  用C#處理文本文件的完整源程序代碼(control.cs): 
      掌握了上面這些關(guān)鍵步驟,就可以方便的得到用C#來處理文本文件的一個完整的源程序,具體如下: 
          using  System  ;
              using  System.Drawing  ;
              using  System.Collections  ;
              using  System.ComponentModel  ;
              using  System.Windows.Forms  ;
              using  System.Data  ;
              using  System.IO  ;
              using  System.Drawing.Printing  ;
          public  class  Form1  :  Form
          {
          private  RichTextBox  richTextBox1  ;
          private  Button  button1  ;
          private  Button  button2  ;
          private  Button  button3  ;
          private  Button  button4  ;
          private  Button  button5  ;
          private  OpenFileDialog  openFileDialog1  ;
          private  SaveFileDialog  saveFileDialog1  ;
          private  PrintDialog  printDialog1  ;
          private  PrintDocument  ThePrintDocument  ;
          private  PrintPreviewDialog  printPreviewDialog1  ;
                              private  StringReader  myReader  ;
          private  System.ComponentModel.Container  components  =  null  ;
         
          public  Form1  (  )
          {
          //初始化窗體中的各個組件
          InitializeComponent  (  )  ;
          }
          //清除程序中使用多的資源
          protected  override  void  Dispose  (  bool  disposing  )
          {
          if  (  disposing  )
          {
          if  (  components  !=  null  ) 
      {
      components.Dispose  (  )  ;
          }
          }
          base.Dispose  (  disposing  )  ;
          }
          private  void  InitializeComponent  (  )
          {
          richTextBox1  =  new  RichTextBox  (  )  ;
          button1  =  new  Button  (  )  ;
          button2  =  new  Button  (  )  ;
          button3  =  new  Button  (  )  ;
          button4  =  new  Button  (  )  ;
          button5  =  new  Button  (  )  ;
                          saveFileDialog1  =  new  SaveFileDialog  (  )  ;
                          openFileDialog1  =  new  OpenFileDialog  (  )  ;
          printPreviewDialog1  =  new  PrintPreviewDialog  (  )  ;
          printDialog1  =  new  PrintDialog  (  )  ;
          ThePrintDocument  =  new  PrintDocument  (  )  ;
                                                          ThePrintDocument.PrintPage  +=  new  PrintPageEventHandler  (  ThePrintDocument_PrintPage  )  ;
          SuspendLayout  (  )  ;
          richTextBox1.Anchor  =  AnchorStyles.None  ;
          richTextBox1.Name  =  "richTextBox1"  ;
          richTextBox1.Size  =  new  Size  (  448  ,  280  )  ;
          richTextBox1.TabIndex  =  0  ;
          richTextBox1.Text  =  ""  ;
          button1.Anchor  =  AnchorStyles.None  ;
          button1.Location  =  new  Point  (  41  ,  289  )  ;
          button1.Name  =  "button1"  ;
          button1.Size  =  new  Size  (  48  ,  30  )  ;
          button1.TabIndex  =  1  ;
          button1.Text  =  "打開"  ;
          button1.Click  +=  new  System.EventHandler  (  button1_Click  )  ;
          button2.Anchor  =  AnchorStyles.None  ;
          button2.Location  =  new  Point  (  274  ,  288  )  ;
          button2.Name  =  "button2"  ;
          button2.Size  =  new  Size  (  48  ,  30  )  ;
          button2.TabIndex  =  4  ;
          button2.Text  =  "預(yù)覽"  ;
          button2.Click  +=  new  System.EventHandler  (  button2_Click  )  ;
          button3.Anchor  =  AnchorStyles.None  ;
          button3.Location  =  new  Point  (  108  ,  288  )  ;
          button3.Name  =  "button3"  ;
          button3.Size  =  new  Size  (  48  ,  30  )  ;
          button3.TabIndex  =  2  ;
          button3.Text  =  "保存"  ;
          button3.Click  +=  new  System.EventHandler  (  button3_Click  )  ;
          button4.Anchor  =  AnchorStyles.None  ;
          button4.Location  =  new  Point  (  174  ,  288  )  ;
          button4.Name  =  "button4"  ;
          button4.Size  =  new  Size  (  80  ,  30  )  ;
          button4.TabIndex  =  3  ;
          button4.Text  =  "打印機(jī)設(shè)置"  ;
          button4.Click  +=  new  System.EventHandler  (  button4_Click  )  ;
          button5.Anchor  =  AnchorStyles.None  ;
          button5.Location  =  new  Point  (  345  ,  288  )  ;
          button5.Name  =  "button5"  ;
          button5.Size  =  new  Size  (  48  ,  30  )  ;
          button5.TabIndex  =  5  ;
          button5.Text  =  "打印"  ;
          button5.Click  +=  new  System.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  =  new  Size  (  6  ,  14  )  ;
          ClientSize  =  new  Size  (  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  )  ;
          }
          static  void  Main  (  ) 
      {
      Application.Run  (  new  Form1  (  )  )  ;
          }
         
          private  void  button1_Click  (  object  sender  ,  System.EventArgs  e  )
          {
                      try
                      {
          if  (  openFileDialog1.ShowDialog  (  )  ==  DialogResult.OK  )
          {
              FileStream  fs  =  new  FileStream  (  openFileDialog1.FileName    ,  FileMode.Open  ,  FileAccess.Read  )  ;
              StreamReader  m_streamReader  =  new  StreamReader  (  fs  )  ; 
          //使用StreamReader類來讀取文件
          m_streamReader.BaseStream.Seek  (  0  ,  SeekOrigin.Begin  )  ;
              //  從數(shù)據(jù)流中讀取每一行,直到文件的最后一行,并在richTextBox1中顯示出內(nèi)容
              this.richTextBox1.Text  =  ""  ;
              string  strLine  =  m_streamReader.ReadLine  (  )  ;
              while  (  strLine  !=  null  )
              {
                  this.richTextBox1.Text  +=  strLine  +  "\n"  ;
                  strLine  =  m_streamReader.ReadLine  (  )  ;
              }
              //關(guān)閉此StreamReader對象
              m_streamReader.Close  (  )  ;
          } 
                  }
                  catch  (  Exception  em  )
                      {
          Console.WriteLine  (  em.Message.ToString  (  )  )  ;
                      }
         
          }
         
          private  void  button3_Click  (  object  sender  ,  System.EventArgs  e  )
          {
                      try
                      {
          //獲得另存為的文件名稱
          if  (  saveFileDialog1.ShowDialog  (  )  ==  DialogResult.OK  )
          { 
          //創(chuàng)建一個文件流,用以寫入或者創(chuàng)建一個StreamWriter
          FileStream  fs  =  new  FileStream  (  @saveFileDialog1.FileName    ,  FileMode.OpenOrCreate  ,  FileAccess.Write  )  ;
              StreamWriter  m_streamWriter  =  new  StreamWriter  (  fs  )  ;
              m_streamWriter.Flush  (  )  ;
         
              //  使用StreamWriter來往文件中寫入內(nèi)容
              m_streamWriter.BaseStream.Seek  (  0  ,  SeekOrigin.Begin  )  ;
              //  把richTextBox1中的內(nèi)容寫入文件
              m_streamWriter.Write  (  richTextBox1.Text  )  ;
              //關(guān)閉此文件
              m_streamWriter.Flush  (  )  ;
              m_streamWriter.Close  (  )  ;
          }
                      }
                      catch  (  Exception  em  )
                      {
          Console.WriteLine  (  em.Message.ToString  (  )  )  ;
                      }
          }
         
          private  void  button4_Click  (  object  sender  ,  System.EventArgs  e  )
          {
                      printDialog1.Document  =  ThePrintDocument  ;
                      printDialog1.ShowDialog  (  )  ;
          }
          //預(yù)覽打印文檔
          private  void  button2_Click  (  object  sender  ,  System.EventArgs  e  )
          {
                      try
                      {
          string  strText  =  richTextBox1.Text  ;
          myReader  =  new  StringReader  (  strText  )  ;
          PrintPreviewDialog  printPreviewDialog1  =  new  PrintPreviewDialog  (  )  ;
          printPreviewDialog1.Document  =  ThePrintDocument    ;
          printPreviewDialog1.FormBorderStyle  =  FormBorderStyle.Fixed3D    ;
          printPreviewDialog1.ShowDialog  (  )  ;
                      }
                      catch  (  Exception  exp  )
                      {
          Console.WriteLine  (  exp.Message.ToString  (  )  )  ;
                      }
          }
          //打印richTextBox1中的內(nèi)容
          private  void  button5_Click  (  object  sender  ,  System.EventArgs  e  )
          {
                      printDialog1.Document  =  ThePrintDocument  ;
                      string  strText  =  richTextBox1.Text  ;
                      myReader  =  new  StringReader  (  strText  )  ;
                      if  (  printDialog1.ShowDialog  (  )  ==  DialogResult.OK  )
                      {
          ThePrintDocument.Print  (  )  ;
                      }
          }
                      protected  void  ThePrintDocument_PrintPage  (  object  sender  ,  PrintPageEventArgs  ev  )
                                  {
                      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  )  ;
                      //計(jì)算每一頁打印多少行 
                  linesPerPage  =  ev.MarginBounds.Height  /  printFont.GetHeight  (  ev.Graphics  )  ;
                      //重復(fù)使用StringReader對象  ,打印出richTextBox1中的所有內(nèi)容
                      while  (  count  <  linesPerPage  &&  (  (  line  =  myReader.ReadLine  (  )  )  !=  null  )  ) 
                  {
      //  計(jì)算出要打印的下一行所基于頁面的位置
          yPosition  =  topMargin  +  (  count  *  printFont.GetHeight  (  ev.Graphics  )  )  ;
          //  打印出richTextBox1中的下一行內(nèi)容
          ev.Graphics.DrawString  (  line  ,  printFont  ,  myBrush  ,  leftMargin  ,  yPosition  ,  new  StringFormat  (  )  )  ;
          count++  ;
                      }
                      //  判斷如果還要下一頁,則繼續(xù)打印
                      if  (  line  !=  null  )
          ev.HasMorePages  =  true  ;
                      else
          ev.HasMorePages  =  false  ;
                      myBrush.Dispose  (  )  ;
            }
                }   

      四.  總結(jié): 
      本文雖然只是介紹了用C#處理文本文件,但其實(shí)對C#處理其他文件也有很多的參考價值,這是因?yàn)樵诿挚臻g"System.IO"中定義的用以處理其他文件的類的結(jié)構(gòu)和用以處理文本文件的類的結(jié)構(gòu)有很多是相同的。希望本文對你用C#進(jìn)行文件方面的編程有所幫助。

      本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/sluggard/archive/2005/02/23/298250.aspx

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多