C#總結3

第四章:文件管理緩存

File類:
      對於File類,裏面的方法都是靜態方法,就是直接能夠用FIle來「.」;ide

 記幾個方法吧:File.Copy(string filename1,string filename2);工具

File.Exists(string filename);spa

File.Move(string filename1,string filename2);.net

File.Delete(string filename);指針

其餘的在課本上看吧,沒見考過;orm

但要注意一點,那個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對象的程序集信息、類名和字段信息。 

二、反序列化從文件personInfo.txt中還原一個對象  //反序列化         Stream destream = new FileStream("c:/personInfo.txt", FileMode.Open,             FileAccess.Read, FileShare.Read);             var stillme = (Person)formatter.Deserialize(destream);             stream.Close();

2、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);

3、 formatter.Serialize(stream, me);             stream.Close();             Console.WriteLine("序列化結束\n");             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

相關文章
相關標籤/搜索