-
什么是流:流(Stream)在编程中,通常是指数据的一个连续序列,以及访问和操作这些数据的机制。在输入/输出(I/O)操作中,流常用于读取或写入数据,无论是从文件、内存、网络等来源,或者发送到这些目标。流抽象了数据处理的复杂性,提供了一种顺序访问数据的方式,而不用关心数据的物理结构和存储细节。
-
有哪些流:
- 输入流(Input Stream):用于从源(如文件、网络接口)读取数据。
- 输出流(Output Stream):用于向目标(如文件、网络接口)写入数据。
根据不同的数据处理需求,又可以更细分为以下类型:
- 字节流(Byte Streams):处理原始二进制数据。
- 字符流(Character Streams):处理文本数据,自动处理字符编码问题。
-
这些流分别是做什么的:
- 字节流:
InputStream
是所有字节输入流的超类,用于从源读取字节。OutputStream
是所有字节输出流的超类,用于将字节写入目标。
- 字符流:
Reader
是所有字符输入流的超类,用于从源读取字符。Writer
是所有字符输出流的超类,用于将字符写入目标。
- 字节流:
-
具体实际应用:
- 读取文件:使用
FileInputStream
或FileReader
从文件系统中的文件读取数据。 - 写入文件:使用
FileOutputStream
或FileWriter
向文件系统中的文件写入数据。 - 网络通信:使用
Socket
的输入输出流来接收和发送数据。 - 数据缓冲:使用
BufferedInputStream
和BufferedOutputStream
(或BufferedReader
/BufferedWriter
)来提高文件读写效率。 - 数据转换:使用
InputStreamReader
和OutputStreamWriter
转换字节流到字符流。 - 数据操作:使用
DataInputStream
和DataOutputStream
读取和写入基本数据类型(如 int, float, double 等)。 - 对象序列化:使用
ObjectInputStream
和ObjectOutputStream
读写可序列化对象,进行对象序列化和反序列化。
- 读取文件:使用
-
有哪些已有的好的输入流、输出流API:
- 字节流:
FileInputStream
、FileOutputStream
BufferedInputStream
、BufferedOutputStream
DataInputStream
、DataOutputStream
ObjectInputStream
、ObjectOutputStream
- 字符流:
FileReader
、FileWriter
BufferedReader
、BufferedWriter
InputStreamReader
、OutputStreamWriter
PrintWriter
:提供了格式化方法,可以输出不同类型的数据。
- 字节流:
讲一讲输入流和输出流,以及具体实际应用
![](https://img-home.csdnimg.cn/images/20240611030827.png)