美文网首页java.io源码解析
java.io源码解析(八)--基本数据流(DataInputS

java.io源码解析(八)--基本数据流(DataInputS

作者: dark丶Night | 来源:发表于2019-05-31 15:32 被阅读0次

    声明:本系列只供本人自学使用,勿喷。

    当你需要从输入流中读取基本数据类型,或者往输出流中写入基本数据类型,就需要用DataInputStream或DataOutputStream来装饰流。

    一、DataInputStream

    public class DataInputStream extends FilterInputStream implements DataInput{
        public DataInputStream(InputStream in) {
            super(in);
        }
    }
    
    • 核心方法【DataInput接口的方法】

    读取某类型,就连续read() n次(n=该类型占用字节数)

        public final char readChar() throws IOException {
            int ch1 = in.read();
            int ch2 = in.read();
            if ((ch1 | ch2) < 0)
                throw new EOFException();
            return (char)((ch1 << 8) + (ch2 << 0));
        }
    
        public final int readInt() throws IOException {
            int ch1 = in.read();
            int ch2 = in.read();
            int ch3 = in.read();
            int ch4 = in.read();
            if ((ch1 | ch2 | ch3 | ch4) < 0)
                throw new EOFException();
            return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
        }
    

    二、DataInputStream

    public class DataOutputStream extends FilterOutputStream implements DataOutput {
        public DataOutputStream(OutputStream out) {
            super(out);
        }
    }
    
    • 核心方法【DataOutput接口的方法】

    写入某类型,就连续write() n次(n=该类型占用字节数)

        public final void writeChar(int v) throws IOException {
            out.write((v >>> 8) & 0xFF);
            out.write((v >>> 0) & 0xFF);
            incCount(2);
        }
    
        public final void writeInt(int v) throws IOException {
            out.write((v >>> 24) & 0xFF);
            out.write((v >>> 16) & 0xFF);
            out.write((v >>>  8) & 0xFF);
            out.write((v >>>  0) & 0xFF);
            incCount(4);
        }
    

    相关文章

      网友评论

        本文标题:java.io源码解析(八)--基本数据流(DataInputS

        本文链接:https://www.haomeiwen.com/subject/kyxgtctx.html