1、DataInputStream类继承了InputStream。也就是说DataInputStream是InputStream的子类。但它们同是实现了DataInput接口。
2、DataInputStream比普通的InputStream多一些方法。 增加方法如下:
public abstract void readFully(byte abyte0[]) throws IOException;
public abstract void readFully(byte abyte0[], int i, int j) throws IOException;
public abstract int skipBytes(int i) throws IOException;
public abstract boolean readBoolean() throws IOException;
public abstract byte readByte() throws IOException;
public abstract int readUnsignedByte() throws IOException;
public abstract short readShort() throws IOException;
public abstract int readUnsignedShort() throws IOException;
public abstract char readChar() throws IOException;
public abstract int readInt() throws IOException;
public abstract long readLong() throws IOException;
public abstract float readFloat() throws IOException;
public abstract double readDouble() throws IOException;
public abstract String readUTF() throws IOException;
3、文件存取,有时只是要存储一个对象的成员数据,而不是整个对象的信息,成员数据的类型假设都是Java的基本数据类型,这样的需求不必要使用到与Object输入、输出相关的流对象,可以使用DataInputStream、DataOutputStream来写入或读出数据。
在从文件中读出数据时,不用费心地自行判断读入字符串时或读入int类型时何时该停止,使用对应的readUTF()或readInt()方法就可以正确地读入完整类型数据。同样地,DataInputStream、DataOutputStream并没有改变InputStream或OutputStream的行为,读入或写出时的动作还是InputStream、OutputStream负责。DataInputStream、DataOutputStream只是在实现对应的方法时,动态地为它们加上类型判断功能,在这里虽然是以文件存取流为例,实际上可以在其他流对象上也使用DataInputStream、DataOutputStream功能。
出处:https://blog.csdn.net/yy_love_my/article/details/26609613