彻底转变流,第1部分 - 编程入门网
f (eof)
return -1;
engine.execute ();
}
if (limit - index < length)
length = limit - index;
System.arraycopy (buffer, index, data, offset, length);
index += length;
return length;
}
}
public long skip (long amount) throws IOException {
if (closed) {
throw new IOException ("Stream closed");
} else if (amount <= 0) {
return 0;
} else {
while (index >= limit) {
if (eof)
return 0;
engine.execute ();
}
if (limit - index < amount)
amount = limit - index;
index += (int) amount;
return amount;
}
}
public int available () throws IOException {
if (closed) {
throw new IOException ("Stream closed");
} else {
return limit - index;
}
}
彻底转变流,第1部分(9)时间:2011-06-21 Merlin Hughes当操作数据的应用程序关闭该流时,它调用输出引擎的 finish() 方法,以 便可以释放其正在使用的任何资源。 清单 15. 释放资源
当输出引擎将数据写入其输出流时,调用 writeImpl() 方法。它将这些数据 复制到读缓冲区,并更新读限制索引;这将使新数据可自动地用于读方法。 在单次循环中,如果输出引擎写入的数据比缓冲区中可以保存的数据多,则 缓冲区的容量会翻倍。然而,这不能频繁发生;缓冲区应该快速扩展到足够的大 小,以便进行状态稳定的操作。 清单 16. writeImpl() 方法
下面清单 17 中显示的内部输出流实现表示了一个流将数据写入内部输出流 缓冲区。该代码验证参数都是可接受的,并且如果是这样的话,它调用 writeImpl() 方法。 清单 17. 内部输出流实现
彻底转变流,第1部分(10)时间:2011-06-21 Merlin Hughes最后,当输出引擎关闭其输出流,表明它已写入了所有的数据时,该输出流 设置输入流的 eof 标志,表明已经读取了所有的数据。 清单 18. 设置输入 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |