public Read ( byte b, int off, int len ) : int | ||
b | byte | |
off | int | |
len | int | |
return | int |
public int Read(byte[] b, int off, int len)
{
if (len == 0)
return 0;
int n = 0;
if (isBack) {
isBack = false;
if (len == 1) {
b[off] = back;
return 1;
}
else {
n = 1;
b[off++] = back;
--len;
}
}
if (arrayIn == null) {
return rf.Read(b, off, len) + n;
}
else {
if (arrayInPtr >= arrayIn.Length)
return -1;
if (arrayInPtr + len > arrayIn.Length)
len = (int)(arrayIn.Length - arrayInPtr);
Array.Copy(arrayIn, arrayInPtr, b, off, len);
arrayInPtr += len;
return len + n;
}
}
virtual public void TestSeek() { RandomAccessFileOrArray rafoa = new RandomAccessFileOrArray(new RandomAccessSourceFactory().CreateSource(data)); rafoa.Seek(72); for (int i = 72; i < data.Length; i++) { Assert.AreEqual(data[i], (byte)rafoa.Read()); } }