C#基础篇第十二天--上

本文介绍了C#中File类用于读写文件的基础操作,探讨了绝对路径和相对路径的概念,建议在开发中优先使用相对路径。接着讲解了List泛型集合,特别是装箱和拆箱的概念,指出它们与类型继承的关系。此外,还简单提及了字典数据结构及FileStream的使用。
摘要由CSDN通过智能技术生成

File类读写文件

            //按照指定的编码格式按行读,返回的是个数组
            string[] str= File.ReadAllLines(@"E:\C#\网盘课程\12Day\1\a.txt",Encoding.Default);

            //返回的是个字符串
            string str = File.ReadAllText(@"E:\C#\网盘课程\12Day\1\a.txt", Encoding.Default);

            //返回的是字节数组,读取多媒体文件可以用ReadAllBytes
            byte[] s= File.ReadAllBytes(@"E:\C#\网盘课程\12Day\1\a.txt");
            string str = Encoding.Default.GetString(s);//将数组转换成字符串

            foreach (var item in str)
            {
                Console.WriteLine(item);
            }

            //以字符串的形式写入
            File.WriteAllText(@"E:\C#\网盘课程\12Day\1\a.txt","你好");

            //以行的形式写入,写入的是string类型的数组
            File.WriteAllLines(@"E:\C#\网盘课程\12Day\1\a.txt", new string[]{ "张三","李四"});
            
            string str ="你好";
            byte[] buffer = Encoding.Default.GetBytes(str);//将字符串转换成字节数组
            //写入的是字节数组
            File.WriteAllBytes(@"E:\C#\网盘课程\12Day\1\a.txt", buffer);

            //追加指定的字符串,不覆盖原来的内容
            File.AppendAllText(@"E:\C#\网盘课程\12Day\1\a.txt", "张三");
            Console.ReadKey();

绝对路径和相对路径:
绝对路径:通过给定的这个路径可以直接在我的电脑中找到这个文件。
相对路径:文件相对于应用程序的路径。
我们在开发中应该尽量用相对路径

List泛型集合

            //创建泛型集合对象
            List<int> list = new List<int>();
            list.Add(1);//添加单个元素
            list.Add(2);
            list.Add(3);
            list.AddRange(new int[]{ 1,2,3,4,5});//添加集合
            list.AddRange(list);//添加本身
            int[] a=list.ToArray();//将集合转换为数组
            List<int> b=a.ToList();//将数组转换为集合
            for (int i = 0; i <b.Count; i++)
            {
                Console.WriteLine(b[i]);
            }
            Console.ReadKey();

装箱和拆箱

            int a = 10;
            object o = a;//将值类型转换为引用类型称为装箱
            int b = (int)o;//将引用类型转换为值类型称为拆箱

看两种类型是否发生装箱或者拆箱,要看这两种类型是否存在继承关系。
如果有继承关系,有可能存在,如果没有继承关系,则一定没有关系。

字典

            Dictionary<int, string> dir = new Dictionary<int, string>();
            dir.Add(1, "张三");
            dir.Add(2, "李四");
            dir.Add(3, "王五");
            dir[1] = "赵六";
            //遍历方法一
            foreach (var item in dir.Keys)
            {
                Console.WriteLine("键{0}对应的值是{1}", item, dir[item]);
            }
            //遍历方法二
            foreach (KeyValuePair<int, string> kv in dir)
            {
                Console.WriteLine("键{0}对应的值是{1}", kv.Key, kv.Value);
            }
            Console.ReadKey();

FileStream

            //使用FileStream来读取数据
            //创建对象
            FileStream fsread = new FileStream(@"E:\C#\网盘课程\12Day\1\a.txt", FileMode.OpenOrCreate, FileAccess.Read);
            //声明一个字节数组
            Byte[] buffer = new byte[1024 * 5];
            //将读的内容放到字节数组中
            int t = fsread.Read(buffer, 0, buffer.Length);
            //类型转换成字符串型
            string str = Encoding.Default.GetString(buffer);
            //关闭流
            fsread.Close();
            //释放资源   
            fsread.Dispose();
            Console.WriteLine(str);
            Console.ReadKey();
            //使用FileStream写入数据
            using (FileStream fswrite = new FileStream(@"E:\C#\网盘课程\12Day\1\a.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                string str = "张三";
                byte[] buffer = Encoding.Default.GetBytes(str);
                fswrite.Write(buffer, 0, buffer.Length);
            }
            Console.ReadKey();
        //使用FileStream实现多媒体文件的复制
        static void Main(string[] args)
        {
            string source = @"E:\C#\网盘课程\12Day\1\a.wmv";
            string target = @"E:\C#\网盘课程\12Day\1\b.wmv";
            copyfile(source, target);
            Console.ReadKey();
        }
        public static void copyfile(string source, string target)
        {
            //先读取文件,再写入文件
            using (FileStream fsread=new FileStream(source,FileMode.Open,FileAccess.Read))
            {
                using (FileStream fswrite=new FileStream(target,FileMode.OpenOrCreate,FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    while (true)
                    {
                        //本次读取实际读取到的字节数
                        int r = fsread.Read(buffer, 0, buffer.Length);
                        if (r == 0)//返回0代表本次什么都没有读到
                        {
                            break;
                        }
                        fswrite.Write(buffer, 0, r);
                    }   
                }
            }
        }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值