add
This commit is contained in:
64
Assets/CoolapeFrame/Scripts/toolkit/ByteEx.cs
Normal file
64
Assets/CoolapeFrame/Scripts/toolkit/ByteEx.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
|
||||
namespace Coolape
|
||||
{
|
||||
public class ByteEx
|
||||
{
|
||||
public static byte[] readFully (Stream stream)
|
||||
{
|
||||
// 初始化一个32k的缓存
|
||||
byte[] buff = new byte[32768];
|
||||
using (MemoryStream ms = new MemoryStream ()) { //返回结果后会自动回收调用该对象的Dispose方法释放内存
|
||||
// 不停的读取
|
||||
while (true) {
|
||||
int read = stream.Read (buff, 0, buff.Length);
|
||||
// 直到读取完最后的3M数据就可以返回结果了
|
||||
if (read <= 0)
|
||||
return ms.ToArray ();
|
||||
|
||||
ms.Write (buff, 0, read);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void readFully4BLength (Stream ns)
|
||||
{
|
||||
int len = NumEx.readInt (ns);
|
||||
byte[] b = new byte[len];
|
||||
readFully (ns, b);
|
||||
}
|
||||
|
||||
public static void readFullyBIO2Length (Stream ns)
|
||||
{
|
||||
int len = B2InputStream.readInt (ns);
|
||||
byte[] b = new byte[len];
|
||||
readFully (ns, b);
|
||||
}
|
||||
|
||||
public static void readFully (Stream ns, byte[] b)
|
||||
{
|
||||
int off = 0;
|
||||
int len = b.Length;
|
||||
readFully (ns, b, off, len);
|
||||
}
|
||||
|
||||
public static void readFully (Stream ns, byte[] b, int off, int len)
|
||||
{
|
||||
if (len < 0)
|
||||
return;
|
||||
int n = 0;
|
||||
int trynum = 1000;
|
||||
while (n < len) {
|
||||
if (trynum-- <= 0)
|
||||
break;
|
||||
int count = ns.Read (b, off + n, len - n);
|
||||
if (count == 0)
|
||||
continue;
|
||||
if (count < 0)
|
||||
return;
|
||||
n += count;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user