• C#基础笔记(第二十一天)


    1.FIle类、Path类、Directory类复习
    操作文件的
    File 操作文件,静态类,对文件整体操作。拷贝、删除、剪切等。
    Directory 操作目录(文件夹),静态类。
    Path 对文件或目录的路径进行操作(很方便)[字符串]
    Strean 文件流,抽象类。

    Path 操作文件路径
    File 操作文件
    复制、剪切、创建、移除
    //File.Create(@"C:UsersSJDDesktop ew.txt");
    //Console.WriteLine("创建成功");
    //Console.ReadKey();

    //File.Delete(@"C:UsersSJDDesktop ew.txt");
    //Console.WriteLine("删除成功");
    //Console.ReadKey();

    //File.Move(@"C:UsersSJDDesktop ew.txt", @"C:UsersSJDDesktop1.txt");
    //Console.WriteLine("剪切成功");
    //Console.ReadKey();

    使用File类来读取数据(读取小文件,因为是一次性读取,大文件用文件流来读取)

    File的三个读取的方法

    1. 以字节数组的形式读取
    byte[] buffer = File.ReadAllBytes(@"C:UsersSJDDesktop123.txt");
    string str = Encoding.Default.GetString(buffer, 0, buffer.Length);
    Console.WriteLine(str);
    Console.ReadKey();

    2.以字符串数组的形式读取,用在操作每行数据上
    string[]str= File.ReadAllLines(@"C:UsersSJDDesktop123.txt",Encoding.Default);
    for (int i = 0; i < str.Length; i++)
    {
    Console.WriteLine(str[i]);
    }
    Console.ReadKey();

    3.以字符串的形式读取,只用于看一下,不做任何操作
    string str = File.ReadAllText(@"C:UsersSJDDesktop123.txt", Encoding.Default);
    Console.WriteLine(str);
    Console.ReadKey();

    File的三个写入的方法

    1. 以字节数组的形式写入,会覆盖原来的内容
    string str = "今天天气好晴朗,处处好风光";
    byte[] buffer = Encoding.Default.GetBytes(str);
    File.WriteAllBytes(@"C:UsersSJDDesktop1.txt", buffer);
    Console.WriteLine("写入成功");
    Console.ReadKey();

    2.以字符串数组的形式写入一行一行
    File.WriteAllLines(@"C:UsersSJDDesktop1.txt", new string[] { "今天天气好晴朗,处处好风光" });
    Console.WriteLine("写入成功");
    Console.ReadKey();

    3.以字符串的形式直接写入
    string str = "今天天气好晴朗,处处好风光";
    File.WriteAllText(@"C:UsersSJDDesktop1.txt", str);
    Console.WriteLine("写入成功");
    Console.ReadKey();

    4.追加不覆盖,前面加上Append,有AppendAllLines和AppendAllText两种
    File.AppendAllText(@"C:UsersSJDDesktop1.txt", "肯定没有覆盖");
    Console.WriteLine("追加成功");
    Console.ReadKey();

    Directory类
    1.创建指定路径的文件夹
    Directory.CreateDirectory(@"C:UsersSJDDesktop新建文件夹");
    Console.WriteLine("创建成功");
    Console.ReadKey();

    2.删除指定路径的文件夹,文件夹目录不是空的就不能删,非要删除,后面加个true
    Directory.Delete(@"C:UsersSJDDesktop新建文件夹",true);
    Console.WriteLine("删除成功");
    Console.ReadKey();

    3.没有copy这个方法,但有move(剪切)
    Directory.Move(@"C:UsersSJDDesktop123", @"C:UsersSJDDesktop456");
    Console.WriteLine("OK");
    Console.ReadKey();

    4.Directory.GetFiles 获取你指定的文件夹下文件的全路径,后面加上*.格式,可以只读取选择的格式文件路径
    string[] path = Directory.GetFiles(@"C:UsersSJDDesktop456", "*.jpg");
    for (int i = 0; i < path.Length; i++)
    {
    Console.WriteLine(path[i]);
    }
    Console.ReadKey();

    2、文件流
    两个大水缸,把一个缸中的水倒入另一个水缸。两种方式
    .直接把一个缸中的水倒入另一个缸中。 file类
    .用一个桶来把一个缸中的水舀到另一个缸中。 文件流
    需要创建对象

    FileStream 操作字节的
    StreamReader StreamWriter 操作字符的
    垃圾回收器不会帮我们自动回收占用的资源,必须要手动的close和dispose
    但代码一多总忘记加这两个,所以我们把它写在using里面,让他自动的帮助我们释放

    FileStream fsRead 读
    using (FileStream fsRead=new FileStream(@"C:UsersSJDDesktop123.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();

    FileStream fsWrite 追加写入
    using (FileStream fsWrite=new FileStream(@"C:UsersSJDDesktop234.txt",FileMode.OpenOrCreate,FileAccess.Write))
    {
    string str = "今天天气好晴朗";
    byte[] buffer = Encoding.Default.GetBytes(str);
    fsWrite.Write(buffer, 0, buffer.Length);
    Console.WriteLine("写入成功");
    }
    Console.ReadKey();

    StreamReader
    using (FileStream fsRead=new FileStream(@"C:UsersSJDDesktop123.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:UsersSJDDesktop123.txt",true,Encoding.Default,buffer.Length))
    {
    sw.WriteLine("哈哈哈");
    }
    Console.WriteLine("OK");
    Console.ReadKey();

    3、序列化
    要将序列化对象的类 标记为可以被序列化
    [Serializable]
    把对象序列化成二进制

    序列化
    using (FileStream fsWrite = new FileStream(@"C:UsersSJDDesktop123.txt", FileMode.OpenOrCreate, FileAccess.Write))
    {
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(fsWrite, p);
    }
    Console.WriteLine("序列化成功");
    Console.ReadKey();

    反序列化
    Person p;
    using (FileStream fsRead = new FileStrea
    m(@"C:UsersSJDDesktop123.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();

    4、窗体应用程序

  • 相关阅读:
    Win10怎么设置虚拟内存?
    树莓派 —— USB 摄像头简单测试 (拍照 & 视频)
    如何设置树莓派 VNC 的分辨率
    树莓派 VNC Viewer 远程桌面配置教程
    数据库开发——MySQL——数据的增删改查
    数据库开发——MySQL——foreign key
    数据库开发——MySQL——primary key
    一种关闭按钮
    oracle下 启动subversion命令 及 oracle相关服务启动备忘
    table内 获取同一行 其他列的value
  • 原文地址:https://www.cnblogs.com/VSMinos/p/7873492.html
Copyright © 2020-2023  润新知