流——接口

本文介绍了Java中的字节序列来源,即流(stream)的概念,包括文件、网络和内存块。同时,文章详细讲解了几个关键接口,如Closeable、Flushable、Readable、Appendable以及CharSequence,并提到了DataInput、ObjectInput、DataOutput和ObjectOutput等接口在处理字节流和对象输入输出中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字节序列来源(stream)

文件,网络,内存块

面向字节的流不便于处理Unicode形式(因为Unicode中每个字符都使用多个字节来表示),所以出现了Reader和writer

几个接口

  • java.io.Closeable  方法 close()inputstream outputStream Reader Writer 都实现了该接口
  • java.io.Flushable 方法 flush() outputStream Write实现了该接口
此接口对许多不同种类的 char 序列提供统一的只读访问  已知实现类:
CharBuffer, Segment, String, StringBuffer, StringBuilder
 charcharAt(int index)
          返回指定索引的 char 值。
 intlength()
          返回此字符序列的长度。
 CharSequencesubSequence(int start, int end)
          返回一个新的 CharSequence,它是此序列的子序列。
 StringtoString()
          返回一个包含此序列中字符的字符串,该字符串与此序列的顺序相同。

inputStream主要方法:

 intavailable()
          返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
 voidclose()
          关闭此输入流并释放与该流关联的所有系统资源。
 voidmark(int readlimit)
          在此输入流中标记当前的位置。
 booleanmarkSupported()
          测试此输入流是否支持 markreset 方法。
abstract  intread()
          从输入流中读取数据的下一个字节。
 intread(byte[] b)
          从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
 intread(byte[] b, int off, int len)
          将输入流中最多 len 个数据字节读入 byte 数组。
 voidreset()
          将此流重新定位到最后一次对此输入流调用 mark 方法时的位置。
 longskip(long n)
          跳过和丢弃此输入流中数据的 n 个字节。

另外几个接口

DataInput 接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构。
对于此接口中的所有数据读取例程来说,如果在读取所需字节数之前已经到达文件末尾 (end of file),则将抛出 EOFExceptionIOException 的一种)。 如果因为到达文件末尾以外的其他原因无法读取字节,则将抛出 IOException 而不是 EOFException。尤其是,在输入流已关闭的情况下,将抛出 IOException。 
 booleanreadBoolean()
          读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false
 bytereadByte()
          读取并返回一个输入字节。
 charreadChar()
          读取两个输入字节并返回一个 char 值。
 doublereadDouble()
          读取八个输入字节并返回一个 double 值。
 floatreadFloat()
          读取四个输入字节并返回一个 float 值。
 voidreadFully(byte[] b)
          从输入流中读取一些字节,并将它们存储在缓冲区数组 b 中。
 voidreadFully(byte[] b, int off, int len)
          从输入流中读取 len 个字节。
 intreadInt()
          读取四个输入字节并返回一个 int 值。
 StringreadLine()
          从输入流中读取下一文本行。
 longreadLong()
          读取八个输入字节并返回一个 long 值。
 shortreadShort()
          读取两个输入字节并返回一个 short 值。
 intreadUnsignedByte()
          读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int 类型,并返回结果,所以结果的范围是 0255
 intreadUnsignedShort()
          读取两个输入字节,并返回 065535 范围内的一个 int 值。
 StringreadUTF()
          读入一个已使用 UTF-8 修改版格式编码的字符串。
 intskipBytes(int n)
          试图在输入流中跳过数据的 n 个字节,并丢弃跳过的字节。
最主要的使用类是 DataInputStream



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值