第四章:文件管理

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)//写入byt1的0到20

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

文本读写器:

这个符合中国人的习惯:

StreamWrite,StreamRead

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("序列化结束\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.........n个catch.....finally;

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

接口:

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

接口之间可以继承:

例:

Public interface IFather

{

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

}

Public class Son:IFather

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

随机推荐

  1. 430单片机之定时器A功能的大致介绍

    总的来说,430单片机一共有三个定时器,定时器A,定时器B,还有就是看门狗定时器,这里我们主要是讨论430单片机的定时器A的功能,定时器A的功能是我目前见过最厉害的定时器,视频上说用好定时器A的话,对 ...

  2. FL2440移植u-boot2011.09

    u-boot version:2011.09-rc1 /home/lucas/u-boot-2011.09-rc1 OS:debian 7.1 cross-compilation chain:arm- ...

  3. 《C++ Primer Plus 第六版》读书笔记

    CH1-3:处理数据 1 列表初始化 char c={31325}:不允许缩窄 char c={66}; char c={x}:不能为变量 2 强制类型转换 (typename) value type ...

  4. 可以使用Markdown了?

    园子果然领先 1.标题类 一级标题 二级标题 三级标题 四级 六级 怎么可以用#号?上传上去看看 2.换行 第一行 换一行 在换一行 3.多个下划线 the_odd_egg odd 斜体用星号 4.删 ...

  5. gpg: no valid OpenPGP data found

    gpg: no valid OpenPGP data found

  6. 你所不知道的五件事情--java.util.concurrent(第二部分)

    这是Ted Neward在IBM developerWorks中5 things系列文章中的一篇,仍然讲述了关于Java并发集合API的一些应用窍门,值得大家学习.(2010.06.17最后更新) 摘 ...

  7. EasyBCD安装CentOS双系统

    之前使用CentOS安装过ubuntu,今天安装一次CentOS6.6,要复杂一些,列文备忘. 1.安装EasyBCD,下载CentOS-6.6-x86_64-bin-DVD1.iso.CentOS- ...

  8. other

    1.http://handlebarsjs.com/ 2.grunt

  9. ubuntu 忘记用户名及密码解决办法

    1.重启系统 2.长按Shift键,直到出现菜单.选择recovery mode,即恢复模式 3.选择root  4.# 后面敲入 cat /etc/shadow 查看用户名 5.# passwd & ...

  10. Windows 环境下基于 Redis 的 Celery 任务调度模块的实现

    搭建环境: Windows-x64 10 Celery 3.1.23 Celery-with-redis 3.0 Redis-win32-win64 2.4.5   实现步骤: 1.安装 Redis ...