当前位置: 首页 > article >正文

java中输入输出流

一、介绍

java语言定义了许多类专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出类)的子类。

二、输入流

InputStream类是字节输入流的抽象类,是所有字节输入流的父类。InputStream类的具体层次结构。该类中所有方法遇到错误时都会引发IOException异常。(用于处理字节的)

InputStream类的层次结构
InputStreamAudioInputStream
ByteArrayInputStream
StringBufferInputStreamBufferedInputStream
DataInputStream
PushbackInputStream
……
FileInputStream
FilterInputStream
InputStream
ObjectInputStream
SequenceInputStream
PipedInputStream

对该类的常用方法如下:

1、read()方法:从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果已经到达流末尾而没有可用的字节,则返回值为-1。

2、read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。

3、mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。

4、reset()方法:将输入指针返回到当前所做的标记处。

5、skip(long n)方。法:跳过输入流上的n个字节并返回实际跳过的字节数。

6、markSupported()方法:如果当前流支持mark()/reset()操作就返回true。

7、close方法:关闭输入流并释放与该流关联的所有系统资源。

注意:并不是所有的InputStream类的子类都这次InputStream中的定义的所有方法,如skip()、mark()、reset()等方法只对某些子类有用。

Reader类用于处理字符文本的输入,是字符输入流的抽象类,所有字符输入流的实现都是它的子类。Reader类中的方法与InputStream类中的方法类似。(用于处理字符的)

Reader类的具体层次结构

ReaderCharArrayReader
BufferedReaderLineNumberReader
FilterReaderPushbackReader
InputStreamReaderFileReader
PipedReader
StringReader

三、输出流

OutputStream类是字节的输出流的抽象类,此抽象类是表示字节流的所有类的超类。

OutputStream类的层次结构
OutputStreamByteArrayOutputStream
FileOutputStreamBufferedOutputStream
DataOutputStream
……
FilterOutputStream
ObjectOutputStream
OutputStreamOutputStream
PipedOutputStream

OutputStream类中的所有方法:

1、write(int b)方法:将指定的字节写入此输出流。

2、write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。

3、write(byte[] b,int off,int len)方法:将指定byte数组中从偏移量off开始的len个字符写入此输出流。

4、flush()方法:彻底完成输出并清空缓存区。

5、close()方法:关闭输出流。

Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。

Writer类的层次结构
writerBufferedWriterFileWriter
CharArrayWriter
FilterWriter
OutputStreamWriter
PipedWriter
PrintWriter
StringWriter


http://www.kler.cn/a/441217.html

相关文章:

  • 解锁豆瓣高清海报:深度爬虫与requests进阶之路
  • Prompt提示词完整案例:让chatGPT成为“书单推荐”的高手
  • 生成模型:扩散模型(DDPM, DDIM, 条件生成)
  • 能说说MyBatis的工作原理吗?
  • 2024年个人总结
  • c++多态
  • vue3 父组件调用子组件 el-drawer 抽屉
  • linux 串口调试工具minicom使用详解
  • CSS基础与应用详解
  • 王佩丰24节Excel学习笔记——第十五讲:条件格式与公式
  • 浅谈Java注解之CachePut
  • springboot城镇保障性住房管理系统(代码+数据库+LW)
  • go语言使用websocket发送一条消息A,持续接收返回的消息
  • 代码随想录day21 | leetcode 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 二叉树总结篇
  • 【JavaEE】网络(4)
  • 无人机节气门控制技术概述!
  • 基础数据结构---栈
  • 微积分复习笔记 Calculus Volume 2 - 4.2 Direction Fields and Numerical Methods
  • spring循环依赖深度源码解析
  • 开发小技巧之GIT版本回退
  • Linux在Ubuntu系统下安装MySQL数据库(全网最详细)
  • 二十四、Qt之使用动态库
  • 学习笔记070——Java中【泛型】和【枚举】
  • 如何获取抖音item_get_app接口
  • 【Linux】—简单实现一个shell(myshell)
  • 快速掌握源码部署Filebeat