//流操作
// ------------------------------------------------------------------------------------------
//FileStream 针对字节操作;只能进行读或取操作,不能同时进行读取操作,
//readByte 如果没有返回-1,自动将位置定位到下一个字节
//flush 写操做是在关闭流之后完成的,如果想及时的写入,用flush
FileStream fs = new FileStream(@"D:\a.txt", FileMode.Open);
fs.WriteByte(90);
fs.WriteByte(80);
fs.Flush();
fs.Write(new Byte[] { 68, 69 }, 0, 2);//将数组中指定的位置开始的字节数写入到文件中
fs.Close();
fs = new FileStream(@"D:\a.txt", FileMode.Open);
int b = fs.ReadByte();
fs.Read(new byte[10], 0, 1);//从流中取出固定位置开始的字节数,读的位置会发生变化
// Console.WriteLine(fs.Length);//字节长度
// Console.WriteLine(fs.Position);//读取位置,从0开始
int c = fs.ReadByte();
fs.Close();
// Console.WriteLine(c);
// Console.ReadKey();
//------------------------------------------------------------------------------------------
//streamWriter 以字符方式写入到文件,存在编码方式选择
FileStream fs1 = new FileStream(@"D:\c.txt", FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs1);
sw.Write(100);//以100的字符形式‘100’写入到文件中
sw.Write("100");
sw.Close();
fs1.Close();
//------------------------------------------------------------------------------------------
//binaryWriter 以二进制的形式写入,不存在编码方式的选择
fs1 = new FileStream(@"D:\a.txt", FileMode.Open);
BinaryWriter bw = new BinaryWriter(fs1);
bw.Write(100);//以100的二进制形式
bw.Close();
//------------------------------------------------------------------------------------------
//MemoryStream 默认最大512M,如果想用更大,请用构造函数声明;可以提高性能
//内存流的数据来源于内存,FileStream 的数据来源于文件
//文件写
FileStream fs3 = new FileStream(@"F:\a.txt", FileMode.OpenOrCreate);
using (fs3)
{
MemoryStream ms = new MemoryStream(10);
using (ms)
{
ms.WriteByte(66);
ms.Flush();
ms.WriteTo(fs3);
Console.WriteLine();
}
}
//文件读
fs3 = new FileStream(@"F:\a.txt", FileMode.OpenOrCreate);
using (fs3)
{
MemoryStream ms = new MemoryStream(new byte[] { (Byte)fs3.ReadByte() });
using (ms)
{
Console.WriteLine(ms.ReadByte());
}
}
//MemoryStream ms = new MemoryStream(50);
//------------------------------------------------------------------------------------------
//bufferedStream BufferedStream类,可在另一流上添加并读取一个缓冲区,继承Stream抽象类。
//缓冲区是内存中的字节块,用于缓存数据,从而减少对操作系统的调用失败次数(处理大文件速度快)。
//缓冲区可提高读取和写入性能,使用缓冲区可进行读取或写入操作,但不能同时进行这两种操作。
//主要是对大数据的存储,减少频繁的访问磁盘,提高性能
FileStream fs4 = new FileStream("D:\\b.txt",FileMode.OpenOrCreate);
BufferedStream bs = new BufferedStream(fs4);
bs.WriteByte(70);
bs.Close();
fs4.Close();