广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#读取写入文件的3种方式示例代码
  • 175
分享到

C#读取写入文件的3种方式示例代码

2024-04-02 19:04:59 175人浏览 八月长安
摘要

目录1:二进制读写2:泛型读写:3:XML读写:不是很稳定最终效果:总结最新对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试。 1:二进制读写 /

最新对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。

我这里使用窗体来做测试

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("泽国江山入战图
");
            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 = "泽国江山入战图
生民何计乐樵苏
凭君莫话封侯事
一将功成万骨枯
";
                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读写:不是很稳定

/// <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 = "泽国江山入战图
生民何计乐樵苏
凭君莫话封侯事
一将功成万骨枯
";
                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#读取写入文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#读取写入文件的3种方式示例代码

本文链接: https://www.lsjlt.com/news/151531.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作