C#基础学习笔记(集合、文件读写)

一、List泛型集合

为啥现在开发基本不用ArrayList和Hoshtable,主要是装箱和拆箱问题,影响j时间。

List泛型语法:

List<类型> 变量名=new 类型[](); 

  //创建泛型集合对象
            List<string> list = new List<string>();
            list.Add("我是第一个list");
            list.AddRange(new string[] { "我是第二", "我是第三", "我是第四" });
            string[] vs = list.ToArray();//转集合转换为数组

            //将数组转换为集合
            char[] c = new char[] { 'a', 'b', 'c' };
            List <char> lc= c.ToList();

二、字典类型

创建对象

Dictionary<key类型,value类型> dc=new Dictionary<key类型,值类型>():

     //字典集合
            Dictionary<int,string> dic = new Dictionary<int,string>();
            dic.Add(1, "我是第一个");
            dic.Add(2, "我是第二个");
            dic.Add(3, "我是第三个");
            //遍历
            foreach(KeyValuePair<int,string> kvp in dic)
            {
                Console.WriteLine(kvp.Key+" "+ kvp.Value);
            }

 //统计一个字符串中各字符出现的次数,忽略大小写
            string str = "You are Welcome!How are you,I am fine.";
            Dictionary<char, int> map2 = new Dictionary<char, int>();
            char[] vs1 = str.ToArray();
            for (int q = 0; q < vs1.Length; q++)
            {
                try { map2.Add(vs1[q], 1); }
                catch { map2[vs1[q]]++; }
            }
            foreach (KeyValuePair<char, int> pair in map2)
            {
                Console.WriteLine("字母{0}出现了{1}次", pair.Key, pair.Value);
            }

三、文件流FileStream(操作字节的,必须掌握)         

 //------FileStream 之读操作   
            //StreamReader streamReader = null;
            //StreamWriter streamWriter = null;   
            //1.创建FileStream对象。
           // FileStream file = new FileStream(@"D:\T100.txt", FileMode.OpenOrCreate, FileAccess.Read);
            每次读取的字节数
            //byte[] buffer = new byte[1024*1024*5];
            返回本次实际读取到的有效字节数;
            //int r=file.Read(buffer, 0, buffer.Length);
            将字节数组中每一个元素按照指定的编码格式解码成字符串
            //string s=Encoding.Default.GetString(buffer, 0, r);
        
            关闭流
            //file.Close();
            释放占用资源
            //file.Dispose();
            //Console.WriteLine(s);
            //Console.ReadKey();

            //上面关闭流和释放资源只是为了演示为程 ,实际开发中我们会用using()方法来自动做这件事情
            //下面结合using方法来使用FileStream的读与写操作
            using (FileStream fileWrite = new FileStream(@"D:\2.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                //每次读取的字节数
                byte[] buffer = new byte[1024 * 1024 * 5];
                string s=null;
                using (FileStream file = new FileStream(@"D:\T100.txt", FileMode.OpenOrCreate, FileAccess.Read))
                {
                    //返回本次实际读取到的有效字节数;
                    int r = file.Read(buffer, 0, buffer.Length);
                    //将字节数组中每一个元素按照指定的编码格式解码成字符串
                    s = Encoding.Default.GetString(buffer, 0, r);
                }
                //将读到的字符串转成字节数组
                byte[] bufferWrite = Encoding.Default.GetBytes(s);
                //写入
                fileWrite.Write(bufferWrite, 0, bufferWrite.Length);
            }

=======================================================

四、 StreamReader和StreamWrite(操作字符的)

 

//StreamReader读取文件,参数写路径以及读取编码格式
            using (StreamReader sr = new StreamReader(@"D:\T100.txt",Encoding.Default))
            {
                //StreamWriter,指定保存路径,加参数false是覆盖,加true是追加写入
                using(StreamWriter sw = new StreamWriter(@"D:\T200.txt",true)) 
                {
                    /*
                    //EndOfStream是判断是否到了文件尾。
                    while (!sr.EndOfStream)
                    {      
                        //ReadLine是一行一行读取
                        string line = sr.ReadLine()+"\r\n";
                        sw.Write(line);
                    }
                    Console.WriteLine("写入完成");
                    */
                    //对于小文件复制可以选用以下方法,大文件不采用,会比较占内存
                    string str=sr.ReadToEnd();
                    sw.Write(str);
                    Console.WriteLine("写入完成");
                }
            }

五、BinaryWriter、 BinaryReader 类:写入读取二进制数据

class Program
{
    static void Main(string[] args)
    {
        FileStream fileStream = new FileStream(@"D:\\code\\test.txt", FileMode.Open, FileAccess.Write);
        //创建二进制写入流的实例
        BinaryWriter binaryWriter = new BinaryWriter(fileStream);
        //向文件中写入图书名称
        binaryWriter.Write("C#基础教程");
        //向文件中写入图书价格
        binaryWriter.Write(49.5);
        //清除缓冲区的内容,将缓冲区中的内容写入到文件中
        binaryWriter.Flush();
        //关闭二进制流
        binaryWriter.Close();
        //关闭文件流
        fileStream.Close();
        fileStream = new FileStream(@"D:\\code\\test.txt", FileMode.Open, FileAccess.Read);
        //创建二进制读取流的实例
        BinaryReader binaryReader = new BinaryReader(fileStream);
        //输出图书名称
        Console.WriteLine(binaryReader.ReadString());
        //输出图书价格
        Console.WriteLine(binaryReader.ReadDouble());
        //关闭二进制读取流
        binaryReader.Close();
        //关闭文件流
        fileStream.Close();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值