文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#读取写入文件的方式有哪些

2023-07-02 09:59

关注

这篇“C#读取写入文件的方式有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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("泽国江山入战图");            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#读取写入文件的方式有哪些

以上就是关于“C#读取写入文件的方式有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯