欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#讀取寫入文件的3種方式示例代碼

 更新時間:2022年06月15日 10:42:55   作者:時間里的  
最近操作文件頻繁,所以這篇文章主要給大家介紹了關于C#讀取寫入文件的3種方式,文中通過實例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友可以參考下

最新對文件的操作比較頻繁。這里記錄一下常用的幾種文件讀寫的方式。

我這里使用窗體來做測試。

1:二進制讀寫

/// <summary>
        /// 二進制寫入文件
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveDlg = new SaveFileDialog();
            saveDlg.FileName = "File";
            saveDlg.Title = "保存數據";
            saveDlg.Filter = "File(*.txt)|*.txt";
            saveDlg.DefaultExt = "txt";
            saveDlg.AddExtension = true;
            //saveDlg.InitialDirectory = "D:AMC Results";
            if (saveDlg.ShowDialog() == DialogResult.OK)
            {
                Cursor = Cursors.WaitCursor;
                SaveDatafileWithNewVersion(saveDlg.FileName);
                Cursor = Cursors.Default;
            }
        }
  
        /// <summary>
        /// 二進制保存文件
        /// </summary>
        public static void SaveDatafileWithNewVersion(String sFile)
        {
            //文件格式依次為:內部版本號,...
            Stream stream = File.Open(sFile, FileMode.Create);
            BinaryWriter bw = new BinaryWriter(stream);
            bw.Write((Int16)1);//內部版本號,暫時用1,表示版本1,整型
            ///寫入Config對象
            bw.Write("澤國江山入戰(zhàn)圖
");
            bw.Write("生民何計樂樵蘇
");
            bw.Write("憑君莫話封侯事
");
            bw.Write("一將功成萬骨枯
");
            bw.Close();
            stream.Close();
        }
  
        /// <summary>
        /// 打開文件
        /// </summary>
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDlg = new OpenFileDialog();
            openDlg.Title = "File";
            openDlg.Filter = "File (*.txt)|*.txt";
  
            if (openDlg.ShowDialog() == DialogResult.OK)
            {
                BinaryReader br = new BinaryReader(new FileStream(openDlg.FileName,
                FileMode.Open));
                string str = "";
                int number = br.ReadInt16();
                str += br.ReadString();
                str += br.ReadString();
                str += br.ReadString();
                str += br.ReadString();
  
                richTextBox1.Text = str;
                br.Close();
            }
        }

2:泛型讀寫:

/// <summary>
        /// 泛型寫入
        /// </summary>
        private void button3_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveDlg = new SaveFileDialog();
            saveDlg.FileName = "File";
            saveDlg.Title = "保存數據";
            saveDlg.Filter = "File(*.txt)|*.txt";
            saveDlg.DefaultExt = "txt";
            saveDlg.AddExtension = true;
            //saveDlg.InitialDirectory = "D:AMC Results";
            if (saveDlg.ShowDialog() == DialogResult.OK)
            {
                string str = "澤國江山入戰(zhàn)圖
生民何計樂樵蘇
憑君莫話封侯事
一將功成萬骨枯
";
                BinarySerialize<string>(str, saveDlg.FileName);
            }
        }
  
        /// <summary>
        /// 寫入文件
        /// </summary>
        /// <typeparam name="T">類型</typeparam>
        /// <param name="obj">寫入類型</param>
        /// <param name="path">路徑</param>
        public static void BinarySerialize<T>(T obj, string path)
        {
  
            FileStream fileStream = new FileStream(path, FileMode.Create);
            BinaryFormatter b = new BinaryFormatter();
            try
            {
                b.Serialize(fileStream, obj);
                fileStream.Close();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (fileStream != null)
                {
                    fileStream.Close();
                    fileStream.Dispose();
                }
            }
        }
  
        /// <summary>
        /// 泛型讀取
        /// </summary>
        private void button4_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDlg = new OpenFileDialog();
            openDlg.Title = "File";
            openDlg.Filter = "File (*.txt)|*.txt";
  
            if (openDlg.ShowDialog() == DialogResult.OK)
            {
                string str = BinaryDeserialize<string>(openDlg.FileName);
                richTextBox2.Text = str;
            }
        }
  
        /// <summary>
        /// 讀取文件
        /// </summary>
        /// <typeparam name="T">類型</typeparam>
        /// <param name="path">路徑</param>
        /// <returns></returns>
        public static T BinaryDeserialize<T>(string path)
        {
            FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
            BinaryFormatter b = new BinaryFormatter();    //SoapFormatter
            T rs;
            try
            {
                rs = (T)b.Deserialize(fileStream);
                return rs;
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (fileStream != null)
                {
                    fileStream.Close();
                    fileStream.Dispose();
                }
            }
            return default(T);
        }

3:XML讀寫:不是很穩(wěn)定

/// <summary>
        /// XML寫入
        /// </summary>
        private void button5_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveDlg = new SaveFileDialog();
            saveDlg.FileName = "File";
            saveDlg.Title = "保存數據";
            saveDlg.Filter = "File(*.txt)|*.txt";
            saveDlg.DefaultExt = "txt";
            saveDlg.AddExtension = true;
            //saveDlg.InitialDirectory = "D:AMC Results";
            if (saveDlg.ShowDialog() == DialogResult.OK)
            {
                string str = "澤國江山入戰(zhàn)圖
生民何計樂樵蘇
憑君莫話封侯事
一將功成萬骨枯
";
                SerializeToXml<string>(saveDlg.FileName, str);
            }
        }
  
        /// <summary>    
        /// XML序列化某一類型到指定的文件
        /// /// </summary>  
        /// /// <param name="filePath">文件路徑</param>  
        /// /// <param name="obj">寫入對象</param> 
        /// /// <param name="type"></param>  
        public static void SerializeToXml<T>(string filePath, T obj)
        {
            try
            {
                using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    xs.Serialize(writer, obj);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
  
        /// <summary>
        /// XML讀取
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDlg = new OpenFileDialog();
            openDlg.Title = "File";
            openDlg.Filter = "File (*.txt)|*.txt";
  
            if (openDlg.ShowDialog() == DialogResult.OK)
            {
                string str = DeserializeFromXml<string>(openDlg.FileName);
                richTextBox3.Text = str;
            }
        }
  
        /// <summary>    
        /// 從某一XML文件反序列化到某一類型  
        /// </summary>   
        /// <param name="filePath">待反序列化的XML文件名稱</param>
        /// <param name="type">反序列化出的</param> 
        /// <returns></returns>   
        public static T DeserializeFromXml<T>(string filePath)
        {
            try
            {
                if (!System.IO.File.Exists(filePath))
                    throw new ArgumentNullException(filePath + " not Exists");
                using (System.IO.StreamReader reader = new System.IO.StreamReader(filePath))
                {
                    System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
                    T ret = (T)xs.Deserialize(reader);
                    return ret;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return default(T);
            }
        }

最終效果:

總結

到此這篇關于C#讀取寫入文件的3種方式的文章就介紹到這了,更多相關C#讀取寫入文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#使用LINQ查詢表達式的基本子句總結

    C#使用LINQ查詢表達式的基本子句總結

    這篇文章主要介紹了C#使用LINQ查詢表達式的基本子句總結,在C#程序中我們可以使用LINQ基本查詢表達式模式來查詢和轉換SQL數據庫、ADO.NET數據集、XML文檔和流以及.NET集合中的數據,需要的朋友可以參考下
    2016-03-03
  • C#委托現實示例分析

    C#委托現實示例分析

    這篇文章主要介紹了C#委托現實,實例分析了C#委托的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C# DataGridView中實現勾選存儲數據和右鍵刪除數據(示例代碼)

    C# DataGridView中實現勾選存儲數據和右鍵刪除數據(示例代碼)

    這篇文章主要介紹了C# DataGridView中實現勾選存儲數據和右鍵刪除數據的示例代碼,通過示例代碼給大家展示運行效果圖,需要的朋友可以參考下
    2021-07-07
  • c#后臺輸出javascript語句示例程序

    c#后臺輸出javascript語句示例程序

    一個很不錯的b/s前臺輸出彈出對話框、后臺寫javascript語句、后臺直接關閉web頁面及一個集成了常用驗證的通用類,十分的方便。代碼如下
    2013-12-12
  • C#實現窗體抖動的兩種方法

    C#實現窗體抖動的兩種方法

    這篇文章主要為大家詳細介紹了C#實現窗體抖動的兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • c#使用dynamic類型優(yōu)化反射的方法

    c#使用dynamic類型優(yōu)化反射的方法

    dynamic是FrameWork4.0的新特性,下面這篇文章主要給大家介紹了關于c#使用dynamic類型優(yōu)化反射的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 基于WPF實現顏色選擇器控件

    基于WPF實現顏色選擇器控件

    這篇文章主要介紹了如何基于WPF實現簡單的顏色選擇器控件,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的小伙伴可以參考一下
    2023-08-08
  • 將ocx文件轉換成C#程序引用的DLL文件的辦法

    將ocx文件轉換成C#程序引用的DLL文件的辦法

    將ocx文件轉換成C#程序引用的DLL文件的辦法,需要的朋友可以參考一下
    2013-03-03
  • C#中內聯(lián)函數的用法介紹

    C#中內聯(lián)函數的用法介紹

    這篇文章介紹了C#中內聯(lián)函數的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C# 遍歷文件夾子目錄下所有圖片及遍歷文件夾下的文件

    C# 遍歷文件夾子目錄下所有圖片及遍歷文件夾下的文件

    在上個項目開發(fā)中遇到這樣的需求,取指定目錄下面的所有圖片,以表格的型式展示并顯示該圖片的相對路徑。下面小編給大家分享C# 遍歷文件夾子目錄下所有圖片及遍歷文件夾下的文件,一起看看吧
    2017-01-01

最新評論