c#读文件

public static byte[] Read2Buffer (Stream stream, int BufferLen){

// 如果指定的无效长度的缓冲区,则指定一个默认的长度作为缓存大小

if (BufferLen < 1){

BufferLen = 0x8000;

}

// 初始化一个缓存区

byte[] buffer = new byte[BufferLen];

int read=0;

int block;

// 每次从流中读取缓存大小的数据,知道读取完所有的流为止

while ( (block = stream.Read(buffer, read, buffer.Length-read)) > 0){

// 重新设定读取位置

read += block;

 

// 检查是否到达了缓存的边界,检查是否还有可以读取的信息

if (read == buffer.Length){

// 尝试读取一个字节

int nextByte = stream.ReadByte();

 

// 读取失败则说明读取完成可以返回结果

if (nextByte==-1){

return buffer;

}

 

// 调整数组大小准备继续读取

byte[] newBuf = new byte[buffer.Length*2];

Array.Copy(buffer, newBuf, buffer.Length);

newBuf[read]=(byte)nextByte;

buffer = newBuf;// buffer是一个引用(指针),这里意在重新设定buffer指针指向一个更大的内存

read++;

}

}

// 如果缓存太大则使用ret来收缩前面while读取的buffer,然后直接返回

byte[] ret = new byte[read];

Array.Copy(buffer, ret, read);

return ret;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值