zoukankan      html  css  js  c++  java
  • C#总结3

    第四章:文件管理

    File类:
          对于File类,里面的方法都是静态方法,就是直接可以用FIle来“.”;

     记几个方法吧:File.Copy(string filename1,string filename2);

    File.Exists(string filename);

    File.Move(string filename1,string filename2);

    File.Delete(string filename);

    其他的在课本上看吧,没见考过;

    但要注意一点,那个filename的格式是”C:\1.txt”或者是@”C:1.txt”;

    FileStream类;主要是对文件流的操作:

    例:

    FileStream f1=File.Create(“C:\1.txt”);//这是创建一个文件

    还有下面的几个:

    FileStream f1=File.CreateNew(“C:\1.txt”);//创建一个新的,如果存在老的就报异常;

    FileStream f1=File.Open(“C:\1.txt”);//打开,如果没有也报异常

    FileStream f1=File.OpenOrCreate(“C:\1.txt”);//打开或者创建

    FileStream f1=File.Append(“C:\1.txt”);//已追加打开文件,指针放在文件的最后;

    FileStream f1=File.Truncate(“C:\1.txt”);//清空原来文件里的内容

    对于文件的读取方式有三种:read write readwrite

    怎么对文件进行读写:

    第一种方式是:writebyte readbyte,一字节的方式读写;

    如:f1.writebyte((byte)1);

    F1.readbyte();

    第二种:read write;批量的

    使用这样的,要有一个缓存空间:

    例;

    Byte[] byt1=new byte[200]{,,,,,,,,,,,,,,,,,,,,};

    F1.write(byt1,0,20)//写入byt1020

    Byte[] byt2=new byte[200];

    F1.read(byt2,0,20);//读出前20个;

     

    BinaryWriter类;二进制读取器;

    作为一个工具来对文件进行读取

    用法:

    FileStream f1=File.Create(“C:\1.txt”);

    BinaryWrite bw1=new BinaryWrite(f1);

    Bw1.write(参数);//

    BinaryRead类;二进制的读:

    FileStream f1=File.Create(“C:\1.txt”);

    BinaryRead br1=new BinaryRead(f1);

    文本读写器:

    这个符合中国人的习惯:

    StreamWriteStreamRead

    FileStream f1=File.Create(“C:\1.txt”);

    StramWrite bw1=new StreamWrite(f1);

    Bw1.Write(参数);

    对于读:

    FileStream f1=File.Create(“C:\1.txt”);

    StramRead br1=new StreamRead(f1);

     

    如果想读一定一定数量的:

    要先设置一个缓存空间:char[] c=new char[10];

    Br1.read(c,0,10)//10个字符

    还有几个方法:br1.readLine()//读一行

    Br.ReadToEnd();//读到最后;

    对于持久化:

    看课本P179

    BinaryFormatter序列化方式 1、序列化�新建一个Person对象me�然后将其序列化保存到文件personInfo.txt] var me = new Person                          {                              Sno = "200719",                              Name = "yuananyun",                              Sex="man",                              Age=22                          };             //创建一个格式化程序的实例             IFormatter formatter = new BinaryFormatter();             //创建一个文件流             Stream stream = new FileStream("c:/personInfo.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);             formatter.Serialize(stream, me);             stream.Close(); 执行以上代码将创建一个personInfo.txt文件�它包含了me对象的程序集信息、类名和字段信息。 

    2、反序列化�从文件personInfo.txt中还原一个对象  //反序列化         Stream destream = new FileStream("c:/personInfo.txt", FileMode.Open,             FileAccess.Read, FileShare.Read);             var stillme = (Person)formatter.Deserialize(destream);             stream.Close();

    二、SoapFormatter序列化方式 与BinaryFormatter序列化方式类似�只需要把IFormatter formatter = new BinaryFormatter()改成 IFormatter formatter = new SoapFormatter(),并且引用程序集System.Runtime.Serialization.Formatters.Soap.dll.net自带的� using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Soap; namespace SerializableTest {     class Program     {         static void Main(string[] args)         {             //创建一个格式化程序的实例             IFormatter formatter = new SoapFormatter();             Console.WriteLine("对象序列化开始……");             var me = new Person                          {                              Sno = "200719",                              Name = "yuananyun",                              Sex="man",                              Age=22                          };             //创建一个文件流             Stream stream = new FileStream("c:/personInfo.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);

    三、 formatter.Serialize(stream, me);             stream.Close();             Console.WriteLine("序列化结束� ");             Console.WriteLine("反序列化开始……");             //反序列化             Stream destream = new FileStream("c:/personInfo.txt", FileMode.Open,             FileAccess.Read, FileShare.Read);             var stillme = (Person)formatter.Deserialize(destream);             stream.Close();             Console.WriteLine("反序列化结束�输出对象信息……");             Console.WriteLine(stillme.DisplayInfo());             Console.ReadKey();         }     } } 

     

    异常处理:

    没啥说的:记住几句话:

    Try不能单独使用;

      Try......catch;

    Try.......finally;

    Try......catch......finally

    Try......catch....catch.........ncatch.....finally

    Finally是最后必须执行的;但不是因为上面执行不了了非得放finally

     

    接口:

    对于借口的定义:interface 关键字:

    接口之间可以继承:

    例:

    Public interface IFather

     

    {

    Void speak();//前面没有访问权限字段,没有具体实现方法

    }

    Public class SonIFather

      Public void speak()

    {

     Console.WriteLine(“hello”);

    }

    对于接口的多态什么玩意的:

    就是你继承这个接口,并且实现了接口的方法,但又把这个方法给虚拟了,用于别的子类来继承,我看了我想死的心都有;

    对于区分接口方法和对象方法,感觉这个更坑爹;

    这个我没办法讲了,感觉好没意思,如果说接口不能被实例化,只能通过继承的类来对它实例化,那干嘛还非要出来个属于接口方法和属于对象的方法;

    最后一个多级继承和二义性:

    Public interface IA

    {

     Void speakA();

    }

    Public interface IB

    {

     Void speakB();

    }

    Public class C

    {

    Public void speadC()

    {

      Console.WriteLine(“hello C”);

    }

    }

    Class D:IA,IB,C

    {

      Void IA.speakA()

    {

        Console.WriteLine(“hello A”);

     

    }

     Void IC.speakB()

    {

        Console.WriteLine(“hello B”);

     

    }

     

     

     

    }

     

    二义性:

    Public interface IA

    {

      Void F();

    }

    Public interface IB

    {

    Void F();

    }

    Public class C:IA,IB

    {

    Public void IA.F()

    {

    Console.WriteLine(“hello A”);

    }

    Public void IB.F()

    {

    Console.WriteLine(“hello B”);

    }

    Public override void F()

    {

    Console.WriteLine(“hello C”);

    }

    }

    C c=new C();

    c.F();//输出hello C

    ((IA)c).F();//hello A

    ((IB)c).F();//hello B

  • 相关阅读:
    判断用户分辨率调用不同的CSS样式文件
    译文:创建性感的CSS
    CSS控制文字的显示与隐藏时引出的Bug
    设计规范的理想
    浏览器不兼容的源头
    图片垂直居中的使用技巧
    CSS命名规范
    5.2 微格式
    如何在本地使用 Yahoo! BrowserPlus
    如何让 Firefox 2 和 Firefox 3 版本并存
  • 原文地址:https://www.cnblogs.com/wangheblog/p/3149958.html
Copyright © 2011-2022 走看看