流这章比较多,但分层比较清楚,流可以从三个角度去分层;从流的方向上可以分为输入流和输出流(以程序为参照);从流的处理单位上可以分为字节流和字符流(字节byte,字符char,一字符(16位)等于两字节(8位));从流的功能上可以分为节点流和处理流(节点流必须直接连在数据源上(文件,数据库,网络),而处理流可以套接在节点流或者处理流上,且处理流的处理能力比节点流要强大)。
这章主要学好4个接口,分别是:InputStream,OutputStream,Reader,Writer。
我们从处理单位的角度来分别说明:
InputStream接口包含FileInputStream(文件流),PipedInputStream(管道流),ByteArrayInputStream(内存流),ObjectInputStream(包装类流),FilterInputStream(过滤流)里包括DataInputStream(数据流)和BufferedInputStream(缓冲流)等;OutputStream接口包含FileOutputStream(文件流),PipedOutputStream(管道流),ByteArrayOutputStream(内存流),ObjectOutputStream(包装类流),PrintStream(打印流),FilterOutputStream(过滤流)里包括DataOutputStream(数据流)和BufferedOutputStream(缓冲流)等。
Reader接口包含FileReader(文件流),PipedReader(管道流),CharArrayReader(内存流),BufferedReader(缓冲流),StringReader(字符串流);Writer接口包含FileWriter(文件流),PipedWriter(管道流),CharArrayWriter(内存流),BufferedWriter(缓冲流),StringWriter(字符串流),PrintWriter(打印流)等。
我们再从流的方向上来分析他们的普通方法:
输入流基本都有这几个方法:read()读一个字节,read(byte[] byte)把所有内容读到byte数组里,read(byte[] byte,int start,int len)把所有内容读到byte数组的(start位置长度为len)里;read()读一个字符,read(char[] char)把所有内容读到char数组里,read(char[] char,int start,int len)把所有内容读到char数组的(start位置长度为len)里。
输出流基本都有这几个方法:write(int a)写入一个整数,write(byte[] byte)把byte数组里所有内容写到输出流中,write(byte[] byte,int start,int len)把byte数组的(start位置长度为len)里所有内容写到输出流中;write(int a)写入一个字符,write(char[] char)把char数组里所有内容写到输出流中,write(char[] char,int start,int len)把char数组的(start位置长度为len)里所有内容写到输出流中,write(String str)把一个字符串写到输出流中;flush()和close(),每开启一个输出流的时候,在不想用他的时候一定要flush()和close(),这样会将输出流内的内容刷到目的地(close()方法也有flush功能)。
若需要将字节流转换成字符流则可以用InputStreamReader(OutputStreamWriter),需要将InputStream(OutputStream)套接在InputStream的构造函数里。
Object流需要将添加的Object序列化,也就是要实现Serializable接口(他没有任何虚方法,只是一个标志性接口),才能将Object添加到流里面。
这就是流这章的主要内容,希望能对大家有所帮助。