C#使用BufferedStream类读写缓冲区

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#使⽤BufferedStream类读写缓冲区
缓冲区是内存中的字节块,⽤于缓存数据,从⽽减少对操作系统的调⽤失败次数。

缓冲区可提⾼读取和写⼊性能。

使⽤缓冲区可进⾏读取或写⼊操作,但不能同时进⾏这两种操作。

BufferedStream类⽤于读写缓冲区。

创建BufferedStream对象的语法如下:
<访问修饰符> BufferedStream 对象名=new BufferedStream(Stream stname);
<访问修饰符> BufferedStream 对象名=new BufferedStream(Stream stname,int size);
这两种⽅法都可以创建BufferedStream流对象,前者只有⼀个参数——Stream实例,后者在此基础上增加了表⽰缓冲区⼤⼩的整型数据。

默认情况下,缓冲区的⼤⼩是4096字节。

BufferedStream对象是包裹已经创建的现有流对象⽽形成的,要使⽤BufferedStream,需要⽤BufferedStream,需要先创建⼀个Stream流对象。

创建⽅法如下:
Stream instream=File.OpenRead(⽂件名);
stream outstream=file.OpenWrite(⽂件名);
创建好流对象后,将这些对象作为参数传递给BufferedStream类的构造函数,创建BufferedStream实例。

⽰例代码如下:BufferedStream bfs=new BufferedStream(instream);
bufferedStream objbfs=new BufferedStream(outstream);
创建了BufferedStream对象后,可以⽤该对象调⽤Read()和Write()⽅法,实现数据的读写。

⽰例代码如下:
int byteread=bfs.Read(buffer,0,20);
objbfs.Write(buffer,0,byteread);
最后⼀定要清空缓冲区,以确保数据全部写⼊⽂件。

bfs.Flush();
objbfs.Flush();
BufferedStream.Write ⽅法:将字节复制到缓冲流,并将缓冲流内的当前位置前进写⼊的字节数。

BufferedStream.Read ⽅法:将字节从当前缓冲流复制到数组。

BufferedStream.Seek ⽅法:设置当前缓冲流中的位置。

using System;
using System.IO;
using System.Text;
class BufferedStreamTest
{
private static void AddText(BufferedStream bs, string value)
{
byte[]info = new UTF8Encoding().GetBytes(value);
bs.Write(info, 0, info.Length);
}
public static void Main()
{
string path = "F:\\bsfile.txt";
if (File.Exists(path))
File.Delete(path);
BufferedStream bs = new BufferedStream(File.Create(path));
AddText(bs, "The first line ");
AddText(bs, "123456789\r\n");
AddText(bs, "The second line\r\n");
AddText(bs, "Another line");
bs.Close();
bs = new BufferedStream(File.OpenRead(path));
byte[]b = new byte[bs.Length];
UTF8Encoding utf8 = new UTF8Encoding();
while (bs.Read(b, 0, b.Length) > 0)
Console.WriteLine(utf8.GetString(b));
Console.ReadKey();
}
}。

相关文档
最新文档