编程语言中IO流的使用
什么是IO流
java的io是实现输入和输出的基础,都在java.io.*
包下。
流(stream)是一种有顺序
的,有起点
和终点
的字节集合
IO流的分类:
按照流的方向区分: 节点流,输入流
(往内存中去)、输出流
(内存中出来)
java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
按照读取数据方式区分: 处理流,字节流
、字符流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
注意: 在java中只要"类名"以Stream结尾的都是字节流。以"Reader/Writer"结尾的都是字符流。其实一切都是字节流,没有字符流这个东西,字符只是根据编码集
对字节流翻译之后的产物。
java.io包下需要掌握的流
常用的节点流
-
文件流(FileInputStream/FileOutputStrean/FileReader/FileWriter)
文件进行处理的节点流, -
字符串(StringReader/StringWriter)
对字符串进行处理的节点流 -
数组流(ByteArrayInputStream/ByteArrayOutputStream/CharArrayReader/CharArrayWriter)
对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组),也可以叫内存操作流。 -
管道流(PipedInputStream/PipedOutputStream/PipedReaderPipedWriter)
对管道进行处理的节点流
常用处理流
-
缓冲流(BufferedInputStrean/BufferedOutputStream/BufferedReader/BufferedWriter)
增加缓冲功能,避免频繁读写硬盘 -
转换流(InputStreamReader/OutputStreamReader)
实现字节流和字符流之间的转换 -
数据流(DataInputStream/DataOutputStream)
提供将基础数据类型写入到文件中,或者读取出来
流的关闭顺序
- 一般是:先打开的后关闭,后打开的先关闭。
- 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b。
- 可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法。
内存操作流
注意:当我们不需要持久化
存储数据,而仅仅是需要进行数据中转
的时候,就可以使用内存流。例如组装一个可变长度的字节数组。
ByteArrayOutputStream是byte类型的数组进行自动扩容的。
ByteArrayOutputStream缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
最后更新于 2022-09-13 18:14:45 并被添加「」标签,已有 550 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭