1. 程式人生 > >C#修改txt文字內容的方法

C#修改txt文字內容的方法

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using BarCode.Logs;

namespace BarCode.Else
{
    public partial class EventRecord : Form
    {
        string path = Application.StartupPath + "\\Else\\Memorandum.ini

";

        public EventRecord()
        {
            InitializeComponent();
        }

        private void EventRecord_Load(object sender, EventArgs e)
        {
            file_open();
        }

        private void file_open()
        {
            //開啟系統日誌檔案
            if (!File.Exists(path))
            {
                // 目錄/檔案不存在,建立目錄/檔案
                File.CreateText(path);
            }
            //開啟檔案
            //FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            //通過指定字元編碼方式可以實現對漢字的支援,否則在用記事本開啟檢視會出現亂碼
            StreamReader m_streamReader = new StreamReader(path, System.Text.Encoding.GetEncoding("GB2312"));
            //使用StreamReader類來讀取檔案
            m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);

            // 從資料流中讀取每一行,直到檔案的最後一行,並在richTextBox1中顯示出內容
            this.richTextRecord.Text = "";
            string strLine = m_streamReader.ReadLine();

            while (strLine != null)
            {

                this.richTextRecord.Text += strLine + "\n";

                strLine = m_streamReader.ReadLine();
            }
            //關閉此StreamReader物件

            m_streamReader.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SaveToTxtFile();
        }

        /// <summary>
        /// 儲存檔案
        /// </summary>
        private void SaveToTxtFile()
        {
            //int buffer = 1024;
            //建立一個檔案流,用以寫入或者建立一個StreamWriter

            //FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);

            //通過指定字元編碼方式可以實現對漢字的支援,否則在用記事本開啟檢視會出現亂碼
            /*改函式很重要由於要將修改的內容覆蓋原來的檔案內容故設第二個引數為false,
            同時還不能用其他類如FileString來操作檔案(多執行緒佔用,不能覆蓋修改檔案)
             * 例如:new StreamWriter(fs, true, Encoding.GetEncoding("GB2312"));是錯誤的*/
            StreamWriter m_streamWriter = new StreamWriter(path, false, Encoding.GetEncoding("GB2312"));

            m_streamWriter.Flush();

            // 使用StreamWriter來往檔案中寫入內容

            m_streamWriter.BaseStream.Seek(0, SeekOrigin.Begin);

            // 把richTextBox1中的內容寫入檔案

            m_streamWriter.Write(richTextRecord.Text);

            //關閉此檔案

            m_streamWriter.Flush();

            m_streamWriter.Close();

            this.labwarm.Text = "儲存成功!";
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            this.labwarm.Text = "正在編輯文字";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            SavefileAs();
        }
        /// <summary>
        /// 另存為
        /// </summary>
        private void SavefileAs()
        {
            SaveFileDialog savefile = new SaveFileDialog();
            //提示使用者選擇儲存檔案(預設為桌面)
            savefile.InitialDirectory = @"C:\Documents and Settings\Administrator\桌面";
            //開啟檔案的初始目錄
            savefile.Filter = "備忘錄 (*.txt)|";
            savefile.FileName = "Memorandum";
            //格式轉換如此簡單
            savefile.DefaultExt = ".txt";
            //設定或獲取檔案字尾
            DialogResult dr = savefile.ShowDialog();
            if (dr == DialogResult.OK)
            {
                String filePath = savefile.FileName.ToString();
                try
                {
                    File.Copy(path, filePath, true);
                }
                catch (Exception e1)
                { (new Clogs()).LogError("錯誤資訊", e1); return; }
            }
        }
    }
}