1、比喻的非常好,让我们从直观上认识了InputStream为什么不能重复被读。
1、InputStream表示字节输入流,它是一个抽象类,不能实例化。InputStream的作用是标志那些从不同数据起源产生输入的类。
2、InputStream类是字节输入流的抽象类,它是所有字节输入流的父类。 它的完整表示是java.io.InputStream,这说明它是一个公共超类,谈不上继承谁的问题,如果非要说有,那应该是java.lang.Object。
3、InputStream是字节输入流的抽象类,它的子类FileInputStream一般用于读取文件(包括二进制文件)OutputStream是字节输出流的抽象类,它的子类FileOutputStream一般用于文件(包括二进制文件)的写入。
4、InputStream是表示字节输入流的所有类的超类 Reader是用于读取字符流的抽象类 InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。
5、InputStream 此抽象类是表示字节输入流的所有类的超类 InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
InputStream 三个基本的读方法 abstract int read() : 读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。int read(byte[] b) : 将数据读入一个字节数组,同时返回实际读取的字节数。
FileInputStream 顾名思义,就是写入。这句话将a.zip做编码后放到in,要用a.zip的时候就使用in读出来。
该类意思是:从InputStream中派生出来的简单输入类。
你在类的使用上不太恰当。如果你想读取文本内容,你应该使用InputStreamReader这个类,使用这个类并且指定文本内容的字符集,就可以读出正确的内容。
writeXX(),注意,这些writeXX()都是以二进制的方式写入的,所以直接打开文件显示的是乱码。要显示写入文件中的int等数据,要以String形式读入。虽然显示的是乱码,但是用DataInputStream的readXX()可以以int等类型读入。