在JAVA里,流是一些类。
字节流(Byte Stream)
- 字节流以字节为单位处理数据,不经过字符编码转换,直接处理原始数据。
- 常见的字节流类有:
InputStream(输入)、OutputStream(输出)。
字符流(Character Stream)
- 字符流以字符为单位处理数据,通常用于文本文件操作。
- 字符流内部实际上还是使用字节流来完成数据的传输,但在传输前后会进行字符编码和解码。
- 常见的字符流类有:
Reader(输入)、Writer(输出)。
输入流(Input Stream)
- 用于从数据源(如文件、网络等)读取数据。
输出流(Output Stream)
- 用于将数据写入目标位置(如文件、网络等)。
顺序存取文件(Sequential Access File)
- 顺序存取文件只能按照文件内部的顺序来读写数据,通常不支持直接跳转到文件的任意位置进行读写。
随机存取文件(Random Access File)
- 随机存取文件允许程序直接访问文件的任意位置进行读写操作。
- 在Java中,
RandomAccessFile类提供了这种功能。
各种派生的流类
- 不同的流类提供了不同的特性和功能,以满足不同的数据处理需求。
- 例如,
FileInputStream、FileOutputStream是字节流的派生类,用于文件操作;BufferedReader、BufferedWriter是字符流的派生类,提供了缓冲功能以提高读写效率。
二进制流和文本流的区别
二进制流(Binary Stream)
- 二进制流主要用于处理二进制数据,如图片、视频、音频等文件。
- 二进制流在读写数据时不会进行字符编码转换,直接以字节为单位处理数据。
- 二进制流支持更广泛的数据类型,可以处理任意类型的二进制数据。
文本流(Text Stream)
- 文本流主要用于处理文本数据,如程序代码、文档等。
- 文本流在读写数据时会进行字符编码转换,如UTF-8、GBK等。
- 文本流通常只处理字符类型的数据,因此不支持直接处理二进制数据。
总结
流提供了一种抽象的数据传输方式,使得程序能够方便地处理各种类型的数据。在选择使用字节流还是字符流时,需要根据实际的数据类型和需求来决定。如果需要处理二进制数据或进行底层的文件操作,通常选择字节流;如果需要处理文本数据或进行文本文件的读写操作,通常选择字符流。

被折叠的 条评论
为什么被折叠?



