Java 中使用 “流”(Stream) 的概念来描述数据。Java 中使用流对数据操作的类,位于 java.io 包下。
[size=medium][b]一、认识“流”(Stream)[/b][/size]
1、流,借用水流的概念。数据像水流一样在管道中传输。
2、流具有方向性。
相对于内存而言,流入内存称:InputStream,流出内存称:OutputStream
3、流中的数据使用时按无数据量格式(相对于某些数据传输协议,需要在报头写明要传输的数据的长度而言)、编码是最原始的二进制数据进行使用。
[size=medium][b]二、Java中流的分类[/b][/size]
可以从不同的角度对流进行分类:
[b]1.处理的数据单位不同,可分为:字符流,字节流[/b]
[b]2.流的方向不同,可分为:输入流,输出流[/b]
[table]
||字节流|字符流|
|输入流|(abstract class) java.io.InputStream|(abstract class) java.io.Reader|
|输出流|(abstract class) java.io.OutputStream|(abstract class) java.io.Writer|
[/table]
[b]3.功能(处理颗粒度)的不同,可分为:节点流,处理流[/b]
[b]节点流:[/b]
节点流提供了对流的最原始的基本操作。是Java提供的最直接的操作文件,网络等的流。
例如
[b]处理流:[/b]
“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。对节点流(或处理流)进行一系列的包装。
例如
[size=medium][b]三、Java中的流概览[/b][/size]
红色为抽象类
绿色为节点流(原始流),蓝色为处理流
[b][i][color=red]java.io.InputStream[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]FileInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]ByteArrayInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]StringBufferInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]SequenceInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]ObjectInputStream[/color]
└⎯⎯⎯⎯⎯⎯ [color=blue]FilterInputStream[/color]
├⎯⎯⎯⎯ [color=blue]BufferedInputStream[/color]
├⎯⎯⎯⎯ [color=blue]DataInputStream[/color]
├⎯⎯⎯⎯ [color=blue]LinumberInputStream[/color]
└⎯⎯⎯⎯ [color=blue]PushbackInputStream[/color]
[b][i][color=red]java.io.OutputStream[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]FileOutputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedOutputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]ByteArrayOutputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]ObjectOutputStream[/color]
└⎯⎯⎯⎯⎯⎯ [color=blue]FilterOutputStream[/color]
├⎯⎯⎯⎯ [color=blue]BufferedOutputStream[/color]
├⎯⎯⎯⎯ [color=blue]DataOutputStream[/color]
└⎯⎯⎯⎯ [color=blue]PrintStream[/color]
[b][i][color=red]java.io.Reader[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]CharArrayReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]StringReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]InputStreamReader[/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=green]FileReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]BufferedReader[/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=blue]LineNumberReader[/color]
└⎯⎯⎯⎯⎯⎯ [color=red][i]FilterReader[/i][/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=blue]PushbackReader[/color]
[b][i][color=red]java.io.Writer[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]CharArrayWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]StringWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]OutputStreamWriter[/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=green]FileWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]BufferedWriter[/color]
└⎯⎯⎯⎯⎯⎯ [color=red][i]FilterWriter[/i][/color]
引用:
http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html
-
转载请注明
原文出处: http://lixh1986.iteye.com/blog/2333086
-
[size=medium][b]一、认识“流”(Stream)[/b][/size]
1、流,借用水流的概念。数据像水流一样在管道中传输。
2、流具有方向性。
相对于内存而言,流入内存称:InputStream,流出内存称:OutputStream
3、流中的数据使用时按无数据量格式(相对于某些数据传输协议,需要在报头写明要传输的数据的长度而言)、编码是最原始的二进制数据进行使用。
[size=medium][b]二、Java中流的分类[/b][/size]
可以从不同的角度对流进行分类:
[b]1.处理的数据单位不同,可分为:字符流,字节流[/b]
[b]2.流的方向不同,可分为:输入流,输出流[/b]
[table]
||字节流|字符流|
|输入流|(abstract class) java.io.InputStream|(abstract class) java.io.Reader|
|输出流|(abstract class) java.io.OutputStream|(abstract class) java.io.Writer|
[/table]
[b]3.功能(处理颗粒度)的不同,可分为:节点流,处理流[/b]
[b]节点流:[/b]
节点流提供了对流的最原始的基本操作。是Java提供的最直接的操作文件,网络等的流。
例如
// 直接从文件中读取或往文件中写入字节流。
FileInputStream
FileOutputStream
// end
[b]处理流:[/b]
“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。对节点流(或处理流)进行一系列的包装。
例如
// 1、提供带缓冲的读写,提高了读写的效率。
BufferedInputStream
BufferedOutputStream
// 2、提供了读写Java中的基本数据类型的功能。
DataInputStream
DataOutputStream
// 3、使用举例
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
//end
[size=medium][b]三、Java中的流概览[/b][/size]
红色为抽象类
绿色为节点流(原始流),蓝色为处理流
[b][i][color=red]java.io.InputStream[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]FileInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]ByteArrayInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]StringBufferInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]SequenceInputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]ObjectInputStream[/color]
└⎯⎯⎯⎯⎯⎯ [color=blue]FilterInputStream[/color]
├⎯⎯⎯⎯ [color=blue]BufferedInputStream[/color]
├⎯⎯⎯⎯ [color=blue]DataInputStream[/color]
├⎯⎯⎯⎯ [color=blue]LinumberInputStream[/color]
└⎯⎯⎯⎯ [color=blue]PushbackInputStream[/color]
[b][i][color=red]java.io.OutputStream[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]FileOutputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedOutputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]ByteArrayOutputStream[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]ObjectOutputStream[/color]
└⎯⎯⎯⎯⎯⎯ [color=blue]FilterOutputStream[/color]
├⎯⎯⎯⎯ [color=blue]BufferedOutputStream[/color]
├⎯⎯⎯⎯ [color=blue]DataOutputStream[/color]
└⎯⎯⎯⎯ [color=blue]PrintStream[/color]
[b][i][color=red]java.io.Reader[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]CharArrayReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]StringReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]InputStreamReader[/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=green]FileReader[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]BufferedReader[/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=blue]LineNumberReader[/color]
└⎯⎯⎯⎯⎯⎯ [color=red][i]FilterReader[/i][/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=blue]PushbackReader[/color]
[b][i][color=red]java.io.Writer[/color][/i][/b]
├⎯⎯⎯⎯⎯⎯ [color=green]CharArrayWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]StringWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=green]PipedWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]OutputStreamWriter[/color] ⎯⎯⎯⎯⎯⎯⎯⎯⎯ [color=green]FileWriter[/color]
├⎯⎯⎯⎯⎯⎯ [color=blue]BufferedWriter[/color]
└⎯⎯⎯⎯⎯⎯ [color=red][i]FilterWriter[/i][/color]
引用:
http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html
-
转载请注明
原文出处: http://lixh1986.iteye.com/blog/2333086
-