Java中的字符流

数据在两设备间的传输称为流流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

什么是字符和字节?

  • 1 byte = 8 bit
  • 1 char = 2 byte = 16 bit (Java默认UTF-16编码)

字节流

  • InputStream和OutputStream是所有字节流的基类,是一种抽象类。

  • Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。

字节流的使用

InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提供的它们的一系列子类。下面我们来介绍下Java中的字节流。

InputStream
方法功能描述
void close()关闭输入流
int read()从输入流中当前位置读取一个字节的二进制数据,以此数据为低位字节,补足16位的整型量(0~255)后返回,若输入流中当前位置没有数据,则返回-1
int read(byte b[])从输入流当前位置连续读取多个字节并保存到数组中,返回所读取的字节数
int read(byte b[], int offset, int len)从输入连当前位置连续读取len长的字节,从数组offset位置处开始存放,返回所读取的字节数
int available()返回输入流中可以读取的字节数
long skip(long n)跳过字节流中n个字节,此方法有可能失效
boolean markSupported()判断输入流是否支持标记
void mark(int n)标记输入流的当前位置, 参数n表示读取n个字节前标记有效
void reset()将读取位置返回到对此输入流最后调用mark()方法的位置

另外,字节流在默认情况下是不支持缓存的,这意味着每调用一次方法都会请求操作系统来操作一个字节,这往往会伴随着一次磁盘IO,因此效率会比较低。

OutputStream
方法功能描述
void close()关闭输出流
void flush()强制清空缓存区并向外设输出数据
void write(int b)将参数b的低位字节写入输出流
void write(byte b[])将数组b写入输出流
void write(byte b[], int offset, int len)将数组b第offset位置开始,写入len个字节到输出流

字符流

  • Java中的字符流处理的最基本的单元是Unicode码元(大小2字节)

Unicode码元,也就是一个Unicode代码单元,范围是0x0000~0xFFFF。在以上范围内的每个数字都与一个字符相对应,Java中的String类型默认就把字符以Unicode规则编码而后存储在内存中。

字符流的使用

Reader
  • 输出字符流:把要写入文件的字符序列(实际上是Unicode码元序列)转为指定编码方式下的字节序列,然后再写入到文件中。
方法功能描述
void close()关闭该流并释放与之关联的所有资源。
int read()读取单个字符
int read(char[] cbuf)将字符读入数组
int read(char[] cbuf, int off, int len)将字符读入数组的某一部分
int read(CharBuffer target)试图将字符读入指定的字符缓冲区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值