快速业务通道

彻底转变流,第2部分:优化Java内部I/O - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
boolean closed;   public BytesInputStream (byte[] data) {    this (data, 0, data.length);   }   public BytesInputStream (byte[] data, int offset, int length) {    if (data == null) {     throw new NullPointerException ();    } else if ((offset < 0) || (offset + length > data.length)      || (length < 0)) {     throw new IndexOutOfBoundsException ();    } else {     buffer = data;     index = offset;     limit = offset + length;     mark = offset;    }   }   public int read () throws IOException {    if (closed) {     throw new IOException ("Stream closed");    } else if (index >= limit) {     return -1; // EOF    } else {     return buffer[index ++] & 0xff;    }   }   public int read (byte data[], int offset, int length)     throws IOException {    if (data == null) {     throw new NullPointerException ();    } else if ((offset < 0) || (offset + length > data.length)      || (length < 0)) {     throw new IndexOutOfBoundsException ();    } else if (closed) {     throw new IOException ("Stream closed");    } else if (index >= limit) {     return -1; // EOF    } else {     // restrict length to available data     if (length > limit - index)      length = limit - index;     // copy out the subarray     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 {     // restrict amount to available data     if (amount > limit - index)      amount = limit - index;     index += (int) amount;     return amount;    }   }   public int available () throws IOException {    if (closed) {     throw new IOException ("Stream closed");    } else {     return limit - index;    }   }   public void close () {    closed = true;   }   public void mark (int readLimit) {    mark = index;   }   public void reset () throws IOException {    if (closed) {     throw new IOException ("Stream closed");    } else {     // reset index     index = mark;    }   }   public boolean markSupported () {    return true;   } }

彻底转变流,第2部分:优化Java内部I/O(5)

时间:2011-06-21 Merlin Hughes

使用新的字节数组流

清单 7 中的代码演示了怎样使用新的字节数组流来解决第一篇文章中处理的 问题(读一些压缩形式的数据):

清单 7. 使用新的字节数组流

public static InputStream newBruteForceCompress (InputStream in)    throws IOException {   BytesOutputStream sink = new BytesOutputStream ();   OutputStream out = new GZIPOutputStream (sink);   Streams.io (in, out);   out.close ();   return sink.toInputStream (); }

更好的管道流

虽然标准的管道流既安全又可靠,但在性能方面不能令人满意。几个因素导 致了它

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号