在我们做名片管理时用到了对于名片的存储与读入问题。首先我们需要获取当前的路径引用using System.IO;命名空间。我们在写入之前先把card类型的一条记录转化成string类型的数组方便写入。
private string curr = Directory.GetCurrentDirectory();//获取当前路径
       
        public List<Card> cards = new List<Card>();//用于存放所有的Card信息
  /// <summary>
        /// 添加一个Card信息,并保存在本地
        /// </summary>
        /// <returns></returns>
        public bool AddCard()
        {
            bool mark = false;//对是否写入做个标记
            Console.Clear();
            Console.WriteLine("请输入你要添加的记录:");
            Console.WriteLine("如:公司 姓名 职称 手机 电话 传真 电子邮箱 邮政编码 家庭住  址"); 
     Card person = new Card();
          
           
          
        try
 {
            Console.WriteLine("请输入公司名称:");
            string comname = Console.ReadLine();
            person.Companyname = comname;
            Console.WriteLine("请输入名片联系人:");
            string username1 = Console.ReadLine();
            person.Username = username1;
            Console.WriteLine("请输入职位:");
            string position1 = Console.ReadLine();
            person.Position = position1;
            Console.WriteLine("请输入电话号码");
            person.AddTel();
            Console.WriteLine("请输入地址:");
            string address1 = Console.ReadLine();
            person.Address = address1;
            Console.WriteLine("请输入邮箱地址:");
            string email1 = Console.ReadLine();
            person.Email = email1;
            Console.WriteLine("请输入传真号码:");
            string fax1 = Console.ReadLine();
            person.Fax = fax1;
            Console.WriteLine("请输入公司邮编:");
            string prc1 = Console.ReadLine();
            person.Prc = prc1;
            Console.WriteLine("请输入网址:");
            string wwwadress1 = Console.ReadLine();
            person.Wwwadress = wwwadress1;
            cards.Add(person);
                string[] ToAdd = new string[cards.Count];//用于将存放所有Card的信息,便    于使用 File.WriteAllLines()方法写入到本地
                for (int a = 0; a < cards.Count; a++)//把CardL类型的一条记录转化成string类
           //型的数组以方便写入。
                {
                    ToAdd [a] = cards[a].ChangeToString();
                }
                //把所有Card信息写入到本地
                File.WriteAllLines(@"" + curr + "/cards.txt", ToAdd );
                Console.WriteLine("添加成功!\n{0}", person.ToString());
                mark = true;
 }
  catch(Exception e)
            {
                Console.WriteLine(e.Message);
                System.Threading.Thread.Sleep(1000);
                AddCard();
            }
         
         
            return mark ;
        }
/// <summary>
        /// 以字符串的形式按照固定格式返回Card信息,所有数据之间用逗号分开
        /// </summary>
        /// <returns></returns>
        public string ChangeToString()
        {
            string result = "";
result += this.Companyname+ "," + this.UserName + "," + this.Position + "," +     this.Telephone + "," + this.Wwwaddress;
            result += "," + this.Fax + "," + this.Email + "," + this.Prc + "," +   this.Address;
return result;
        }//其实我们也可以把中间的","换成用ASCII码对应的特殊字符。防止用户输入与我们进行分隔时的字符相同。

 /// <summary>
        /// 通过关键字key获得Card的详细信息,只返回所有Card中所有含有关键字的记录
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public string GetCard(string key)
        {
            string result = "";
            //利用循环遍历cards数组,并将包含关键字的对象用字符串输出
            for (int a = 0; a < cards.Count; a++)
            {
                if (cards[a].ToString().Contains(key))
                {
                    result += cards[a].ToString() + "\n"; ;
                }
            }
            //遍历数组后没有找到目标数组
            if (result == "")
            {
                result = "查找的结果不存在";
            }
            return result;
           
        }
在我先前做搜索的时候并没有想到用contains去查找用户输入的关键字,实际上这种contains包含关键字更符合用户的需求,输入一个字可以返回所有的数据,方便用户的检索。
public Card(string zifu)
        {
            List<string> holder = new List<string>();
            string [] Mark = new char[3] {"/t"," ","," };
            foreach (string s in zifu.Split(Mark))
            {
                //将zifu用空格和/t分成的子字符串放入到holder中
                holder.Add(s);
            }
            try  //把分隔出的string类型的对象转化成card类型以填入cards的集合
            {
                this.Companyname = holder[0];
                this.UserName = holder[1];
                this.Position = holder[2];
                this.Telrphone = holder[3];
                this.Wwwaddress = holder[4];
                this.Fax = holder[5];
                this.Email = holder[6];
                this.Prc = holder[7];
                this.Address = holder[8];
            }
当我们读取string里面的数据时需要先把cards集合里面的数据清空,然后用File.ReadAllLines()读取,由于读取后的类型为数组需要转化为Card类型。我们就调用card的构造函数把string类型转化为card类型以填入cards的集合。
   cards.Clear();//清空cards的集合
            //遍历目标数组中的行,并用行中的数据实例化Card
            foreach (string s in File.ReadAllLines(@"" + curr +   "/cards.txt"))//File.ReadAllLines()读取目标文件中的所有行
            {
               
                    //将实例化的Card填充到数组中
                    cards.Add(new Card(s));
                   
  }
总的来说在文件的写入与读取的时候注意类型之间的转化。我们在读入时需要string类型的集合区保存它。通过split()方法去过滤得到string类型的数组。再把数组对应的索引值赋给card类型对应的字段,以实现类型之间的转化。

转载于:https://blog.51cto.com/zhjjzhjj/359073

c#中文件的写入与读取相关推荐

  1. VC++中对文件的写入和读取

    VC++中对文件的写入和读取 本文介绍两种方法对文件进行读取和写入操作:1.采用fstream类:2.采用CStdioFile类. CStdioFile继承自CFile,一个CStdioFile对象代 ...

  2. python如何读写文件-python文件的写入和读取

    1.txt,xls,doc等文件的使用 f=open("filename","w") 打开一个用于写入的文件,要写入内容时使用f.write("内容& ...

  3. php写excel文件_利用PHPExcel实现Excel文件的写入和读取

    作为一个原本的Java党,用过PHP才知道,原来对于Excel文件的写入和读取原来可以这么简单! 利用PHP实现对于Excel的读取,主要借助于PHPExcel插件来完成. PHPExcel下载地址: ...

  4. PHP文件的写入与读取基础

    1.PHP文件的写入与读取基础 先看图片与代码: 具体代码文本: <?php /* 关于用到的函数文章会讲到*/ $myfile = "../uploads/file.txt" ...

  5. python读取txt文件写入-python txt文件的写入和读取

    1.文件的打开 使用open () 函数 打开文件.他有两个参数,文件路径或文件名和文件的打开方式. "r" 只读模式,不能编辑和删除文件内容. "w" 写入模 ...

  6. python中按照文件夹中文件的排列顺序读取文件内容,python文件显示和windows目录显示一致

    原创 python中按照文件夹中文件的排列顺序读取文件内容 2018-12-06 11:49:18 途径北海道 阅读数 3891 更多 分类专栏: python 版权声明:本文为博主原创文章,遵循 C ...

  7. [转]VC++中对文件的写入和读取

    本文转自:http://blog.csdn.net/fanghb_1984/article/details/7425705 本文介绍两种方法对文件进行读取和写入操作:1.采用fstream类:2.采用 ...

  8. python读取txt文件-python txt文件的写入和读取

    1.文件的打开 使用open () 函数 打开文件.他有两个参数,文件路径或文件名和文件的打开方式. "r" 只读模式,不能编辑和删除文件内容. "w" 写入模 ...

  9. XML文件的写入和读取(解析)基于DOM4J工具

    这两天做了个天气的小应用,需要用到百度的天气api,获取到的信息是一个xml文档. 所以就从网上查了一下相关的知识,就是关于怎么去解析出来xml文件的信息. 先放一个我自己写的例子,加了点注释,贴这里 ...

最新文章

  1. 大型网站架构系列:缓存在分布式系统中的应用(二)
  2. pyspark rdd 数据持久化
  3. oracle查看被锁的表以及解锁表
  4. matlab 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二)
  5. ejb构建_如何使用单例EJB和MBean构建和清除参考数据缓存
  6. 重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)
  7. Redux学习(一)——Redux的使用过程
  8. 论文浅尝 | 基于知识库的神经网络问题生成方法
  9. google 地图 V3 运动轨迹
  10. 定制简单的404和403页面
  11. GitHub上下载源代码的方法
  12. 凯文米特尼克-《欺骗的艺术》[完整中文版][DOC][PDF]
  13. linux tar命令 打包压缩
  14. 华为ENSP的Stelnet、直连、串口连接、telnet连接登录
  15. Java随意输入字符串,如果含有$将该字符及之前一个字符的去掉
  16. android 辅助功能(无障碍) AccessibilityService 实战入门详解
  17. JavaScript使用百度地图API获取当前位置信息
  18. 开发人员如何在面试中介绍自己的项目经历
  19. 项目管理之关键链法VS关键路径法
  20. 不同直径的圆转一圈后,滚过的距离相同?谈一下亚里士多德车轮悖论与无穷小

热门文章

  1. 知识科普:布线系统的施工顺序是什么
  2. 深入了解JavaScript对象(2)--函数、对象
  3. 微信上传图片 41005 缺少多媒体文件
  4. 关于 Oracle DB CONSTRAINT约束的一些SQL ORA-02292: integrity constraint violated
  5. 【原创】Python 源文件编码解读
  6. BZOJ4298 : [ONTAK2015]Bajtocja
  7. 【转】基于Android Fragment功能的例子
  8. HBase的安装与使用
  9. 维基链Defi时代,生态完善,持续输出
  10. idea将项目打成jar包