目录
FileStream文件流
FileStream file = new FileStream(@"C:\Users\27412\Desktop\new1.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);
stream.Read()
byte[] buffer =new byte[1024*1024*5];
//放回此次读取的有效字节数
int r =file.Read(buffer, 0, buffer.Length);
//将字节数组的每一个元素按指定的编码格式解码成字符串 读取有效的
string s = Encoding.Default.GetString(buffer,0,r);
//关闭流
file.Close();
//释放流的资源
file.Dispose();
Console.WriteLine(s);
Console.ReadKey();
将创建文件流对象写在using中,会自动帮助我释放流的资源 stream.Write()
//写入数据
using(FileStreamfile=newFileStream(@"C:\Users\27412\Desktop\new1.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
string str ="22222";
byte[] buffer = Encoding.Default.GetBytes(str);
file.Write(buffer, 0, buffer.Length);
}
写入时逐个覆盖
stringReader和streamWriter
//使用stringReader读取文件
using ( StreamReader sr = new StreamReader(@"C:\Users\27412\Desktop\new1.txt"))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
//用streamWriter
//使用stringReader读取文件
using (StreamWriter sw = new StreamWriter(@"C:\Users\27412\Desktop\new1.txt"))
{
sw.Write("333333");
}
Console.ReadKey();
*多态
让一个对象表现多种状态
三种手段:虚方法,抽象类,接口
1.虚方法
1).将父类的方法标记为虚方法,使用virtual
2).子类可以重写父类虚函数 override
class per
{
public virtual void sayhello()
{
Console.WriteLine("我是人");
}
}
class chinese:per
{
public override void sayhello()
{
Console.WriteLine("我是中国人");
}
}
取消子类对象的差异性,增加程序的可扩展性
2.抽象类
当父类中的方法不需要实现时,可以写成抽象类
public abstract class Animal
{
public abstract void Bark();//存在的意义是让子类重写
//空实现和没有方法体不是一个概念
}
public class dog: Animal
{
public override void Bark()
{
Console.WriteLine("wwwww");
}
}
Animal a = new dog();//抽象类无法直接创建对象,但是可以创建子类赋值
a.Bark();
Console.ReadKey();
抽象成员必须abstract 标记,并且不能实现
抽象类可以出现非抽象的成员
抽象成员必须出现在抽象类中
抽象类不能被实例化
子类重写函数的签名必须和父类一致
例子:模拟U盘写入电脑
类实现
public abstract class Mobilestorage
{
public abstract void Read();
public abstract void Write();
}
public class udisk:Mobilestorage
{
public override void Read()
{
Console.WriteLine("u盘正在读入数据");
}
public override void Write()
{
Console.WriteLine("u盘正在写入数据");
}
}
public class mp3:Mobilestorage
{
public override void Read()
{
Console.WriteLine("mp3正在读取数据");
}
public override void Write()
{
Console.WriteLine("mp3正在写入数据");
}
public void playmusic()
{
Console.WriteLine("mp3正在播放音乐");
}
}
public class computer
{
public void cpuRead(Mobilestorage ms)
{
ms.Read();
}
public void cpuWrite(Mobilestorage ms)
{
ms.Write();
}
}
实例化
computer cpu = new computer();
Mobilestorage ms = new udisk();
cpu.cpuRead(ms);
cpu.cpuWrite(ms);
Console.ReadKey();