首页>代码>java编写的音乐播放器yoyoplayer程序代码,界面很炫>/YOYOPlayer/src/com/ctreber/aclib/codec/StreamDecoder.java
package com.ctreber.aclib.codec;

import java.io.IOException;
import java.io.InputStream;

/**
 * <p>
 * File decoder based on InputStream (Chris' implementation).
 * </p>
 * @author &copy; Christian Treber, ct@ctreber.com
 */
public class StreamDecoder extends AbstractDecoder {
    private final InputStream _stream;

    /**
     * Create a BIG_ENDIAN file decoder. See
     * {@link AbstractDecoder#setEndianess}to change the default behavior.
     * @param pStream
     */
    public StreamDecoder(final InputStream pStream) {
        super();
        _stream = pStream;
    }

    public void seek(final long pBytes) throws IOException {
        final long lSkip = pBytes - getPos();
        if (lSkip >= 0) {
            final long lBytesSkipped = _stream.skip(lSkip);
            if (lBytesSkipped != lSkip) {
                throw new IOException("Tried to skip " + lSkip
                        + ", but skipped " + lBytesSkipped);
            }
            _pos += lSkip;
        } else {
            throw new IllegalArgumentException(
                    "Can't seek a position already passed (skip " + lSkip + ")");
        }
    }

    public byte[] readBytes(final long pBytes, final byte[] pBuffer)
            throws IOException {
        byte[] lBuffer = pBuffer;
        if (lBuffer == null) {
            lBuffer = new byte[(int) pBytes];
        } else {
            if (lBuffer.length < pBytes) {
                throw new IllegalArgumentException(
                        "Insufficient space in buffer");
            }
        }

        final int lBytesRead = _stream.read(lBuffer, 0, (int) pBytes);
        if (lBytesRead != pBytes) {
            throw new IOException("Tried to read " + pBytes
                    + " bytes, but obtained " + lBytesRead);
        }

        _pos += pBytes;

        return lBuffer;
    }

    /**
     * @throws IOException
     * @see com.ctreber.aclib.codec.AbstractDecoder#close()
     */
    public void close() throws IOException {
        _stream.close();
    }
}
最近下载更多
lzl111213  LV1 2023年6月21日
wyx065747  LV67 2022年5月7日
微信网友_5852742079762432  LV6 2022年4月11日
一个好人520  LV10 2021年9月29日
wangdongtai  LV31 2021年8月2日
yxcker  LV7 2021年7月9日
时光凉薄  LV2 2021年7月9日
Mayoubin2001  LV21 2021年6月10日
adim10912  LV2 2020年12月27日
Demo1111  LV30 2020年12月25日
最近浏览更多
花朝廿五  LV1 6月10日
于子洲  LV1 6月2日
JulyMagnolia  LV4 4月29日
cxz2132132  LV11 2023年12月9日
pangzhihui  LV14 2023年11月13日
543539666  LV7 2023年8月30日
NicLee 2023年7月7日
暂无贡献等级
lzl111213  LV1 2023年6月21日
cmq258159  LV2 2023年6月20日
数据库1  LV12 2023年5月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友