.net基础总复习(2)

第二天

文件操作常用类

File

 

//操作文件的

            //复制、剪切、创建、移除

 

 

            //File.Create(@"C:UsersBDSOFTDesktop ew.txt");

            //Console.WriteLine("创建成功");

 

            //File.Delete(@"a");

            //File.Copy(@"a", @"b");

            //File.Move(@"a",@"b");

            //剪切

 

            //Console.ReadKey();

 

            //使用FIle类来读取数据

            //一次性读取 大文件用Stream

 

 

 

            // byte[] buffer = File.ReadAllBytes(@"C:UsersBDSOFTDesktop1.txt");

 

            // string str = Encoding.Default.GetString(buffer, 0, buffer.Length);

 

            // Console.WriteLine(str);

 

            //编码:把字符串以怎样形式存储为二进制 ASCII GBK GB2312 UTF-8

            // Console.ReadKey();

 

            //string[] str2 = File.ReadAllLines(@"C:UsersBDSOFTDesktop1.txt",Encoding.Default);

            //Encoding.Default 即系统默认编码 一般是gb2312

 

            // for (int i = 0; i < str2.Length; i++)

            // {

            //      Console.WriteLine(str2[i]);

            // }

 

            //如果要操作文本文件每行数据,那么用ReadAllLines

            //ReadAllBytes和ReadAllText拿到的整陀数据

 

 

            //  string str = File.ReadAllText(@"C:UsersBDSOFTDesktop1.txt",Encoding.Default);

            // Console.WriteLine(str);

 

            // =======================File类写入================

 

            string str = "今天是最后一天复习啦";

           

            //字符转换成字节数组

            byte[] buffer = Encoding.Default.GetBytes(str);

 

 

            //File.WriteAllBytes(@"C:UsersBDSOFTDesktop1.txt", buffer);

 

 

            //以行的方式写入 (这里传入的是string数组)

            //File.WriteAllLines(@"C:UsersBDSOFTDesktop1.txt", new string[] { "张三", "李四", "王五" });

 

            //直接写入一大陀

            // File.WriteAllText(@"C:UsersBDSOFTDesktop1.txt", "今天很凉快");

 

 

             //File.AppendAllText(@"C:UsersBDSOFTDesktop1.txt", "没有覆盖哟");

Path(对字符串操作)      

文件本身没有改变。

 

Directory

//Directory.CreateDirectory(@"C:UsersBDSOFTDesktop新的文件夹");

 

            //Directory.Delete(@"C:UsersBDSOFTDesktop新的文件夹",true);

 

            //Console.ReadKey();

 

            //Directory.Move(@"a",@"b");

 

            //string[] a = Directory.GetFiles(@"C:UsersBDSOFTDesktopMusic","*.mp4");

 

            //for (int i = 0; i < a.Length; i++)

            //{

 

            //    Console.WriteLine(a[i]);

            //}

 

            //Console.ReadKey();

 

 

练习题:把文件中工资翻倍,然后保存。

class Program

    {

        static void Main(string[] args)

        {

            //案例:对职工工资文件处理,所有人的工资加倍然后输出到新文件

 

 

 

            string[] str = File.ReadAllLines(@"C:工资.txt",Encoding.Default);

 

            for (int i = 0; i < str.Length; i++)

            {

 

                //张三|5000

                string[] strNew = str[i].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

                //张三 5000

                int salary = (int.Parse(strNew[1])*2);

                //10000

                

                str[i] = strNew[0] + '|' + salary.ToString();

 

 

            }

 

            File.WriteAllLines(@"C:工资.txt", str,Encoding.Default);

 

 

 

        }

Stream类(和StreamReader StreamWriter)

 

·文件流?

·两个大水缸,把一个缸中的水倒入另一个水缸中。两种方式:

  1. 1.     直接把一个缸中的水倒入另一个缸中
  2. 2.     用个桶来把一个缸中的水舀到另一个缸中

 

 

//FileStream StreamReader StreamWriter

            //区别:一个是操作字节的,一个是操作字符的,垃圾回收器也不会帮助回收

 

            using (FileStream fsRead = new FileStream(@"C:1.txt", FileMode.OpenOrCreate, FileAccess.Read)) 

            {

 

                byte[] buffer = new byte[1024 * 1024 * 5];

 

 

                //表示本次读取实际读取到的有效字节数

                int r =  fsRead.Read(buffer, 0, buffer.Length);

 

                string s = Encoding.Default.GetString(buffer, 0, r);

                Console.WriteLine(s);

 

            }

 

            Console.ReadKey();

                                            //OpenOrCreate直接覆盖最前面

                                            //Append在最后面追加

            using (FileStream fsWrite = new FileStream(@"C:1.txt",FileMode.OpenOrCreate,FileAccess.Write))

            {

                string s = "今天天气好晴朗!!!";

                byte[] buffer = Encoding.Default.GetBytes(s);

                fsWrite.Write(buffer, 0, buffer.Length);

 

                Console.ReadKey();

 

 

            }

StreamReader

一种很装逼的写法:

 

            using (FileStream fsRead = new FileStream(@"C:1.txt", FileMode.OpenOrCreate, FileAccess.Read))

            {

                using (StreamReader sr = new StreamReader(fsRead,Encoding.Default))

                {

                    while (!sr.EndOfStream)

                    {

                        Console.WriteLine(sr.ReadLine());

 

                    }

                }

            }

            Console.ReadKey();

StreamWriter

   byte[] buffer = new byte[1024 * 1024];

 

            using (StreamWriter sw = new StreamWriter(@"C:1.txt", true , Encoding.Default ,buffer.Length   ))

            {

                sw.WriteLine("哈哈哈");

            }

            Console.WriteLine("ok");

           

 

序列化

class Program

    {

        static void Main(string[] args)

        {

 

            //要将序列化对象的类 标记为可以被序列化的

 

            //Person p = new Person();

            //p.Name = "张三";

            //p.Age = 10;

            //p.Gender = '男';

 

 

            //using (FileStream fsWrite = new FileStream(@"C:1.txt", FileMode.OpenOrCreate, FileAccess.Write))

            //{

            //    BinaryFormatter bf = new BinaryFormatter();

            //    bf.Serialize(fsWrite, p);

            //}

 

            //Console.WriteLine("序列化成功");

 

            //Console.ReadKey();

 

            Person p;

            using (FileStream fsRead = new FileStream(@"C:1.txt", FileMode.OpenOrCreate, FileAccess.Read))

            {

                BinaryFormatter bf = new BinaryFormatter();

                p =  (Person)bf.Deserialize(fsRead);

                Console.WriteLine(p.Name);

                Console.WriteLine(p.Age);

                Console.WriteLine(p.Gender);

                Console.ReadKey();

            }

 

           

        }

    }

 

    [Serializable]

    public class Person

    {

        public string Name

        {

            get;

            set;

        }

 

        public int Age

        {

            get;

            set;

        }

 

        public char Gender

        {

            get;

            set;

        }

 

 

 

    }

一点额外内容

 

1.简单播放器(winform)

。。。

 

原文地址:https://www.cnblogs.com/eret9616/p/8762782.html