第五节 java 字符流

1 .字符流基类

java.io包中专门用于字符流处理的类,是以 Reader 和 Writer 为基础派生的一系列类。

字符流以字符为单位,根据码表映射字符,一次可能读多个字节,只能处理字符类型的数据。

同类 InputStream 和 OutputStream 一样,Reader 和 Writer 也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类 InputStream 和 OutputStream 类似,只不过其中的参数换成字符或字符数组。

Reader 是所有的输入字符流的父类,它是一个抽象类。

我们先来看一看基类 Reader 的方法,其用法与作用都与 InputStream 和 OutputStream 类似,就不做过多的说明了。

方法返回值
close()void
mark (int readAheadLimit)void
markSupported()boolean
read()int
read(char[] cbuf, int off,int len)int
ready()boolean
reset()void
skip(long n)long

Writer 是所有的输出字符流的父类,它是一个抽象类。

Writer 的方法:

方法返回值
close()void
flush()void
write(char[] cbuf)void
write(char[] cbuf, int off,int len)void
write(int c)void
write(String str)void
write(String str, int off, int len)void

InputStreamReader 和 OutputStreamWriter 是 java.io 包中用于处理字符流的最基本的类,用来在字节流和字符流之间作为中介:从字节输入流读入字节,并按编码规范转换为字符;往字节输出流写字符时先将字符按编码规范转换为字节。使用这两者进行字符处理时,在构造方法中应指定一定的平台规范,以便把以字节方式表示的流转换为特定平台上的字符表示。

如果读取的字符流不是来自本地时(比如网上某处与本地编码方式不同的机器),那么在构造字符输入流时就不能简单地使用缺省编码规范,而应该指定一种统一的编码规范“ISO 8859_1”,这是一种映射到 ASCCII 码的编码方式,能够在不同平台之间正确转换字符。

2 .缓存流

同样的,为了提高字符流处理的效率,java.io 中也提供了缓冲流 BufferedReader 和 BufferedWrite。其构造方法与 BufferedInputStream 和 BufferedOutPutStream 相类似。另外,除了 read() 和 write() 方法外,它还提供了整行字符处理方法:

  1. public String readLine():BufferedReader 的方法,从输入流中读取一行字符,行结束标志\n\r或者两者一起(这是更具系统而定的)

  2. public void newLine():BufferedWriter 的方法,向输出流中写入一个行结束标志,它不是简单地换行符\n\r,而是系统定义的行隔离标志(line separator)。

看一看例子吧:

3. 其它字符流类

在这里我们就列举一下有哪些类,具体的木木就不再讲解了。

  1. 对字符数组进行处理: CharArrayReader、CharArrayWrite

  2. 对文本文件进行处理:FileReader、FileWriter

  3. 对字符串进行处理:StringReader、StringWriter

  4. 过滤字符流:FilterReader、FileterWriter

  5. 管道字符流:PipedReader、PipedWriter

  6. 行处理字符流:LineNumberReader

  7. 打印字符流:PrintWriter

类有千万,方法更是不计其数,所以没有必要去掌握所有的方法和类,只需要知道常见常用的就行了,而大多数的类和方法,希望大家有一个印象,当我们在实际开发的时间,能够想到,并且借助其他工具去查询我们需要的方法的应用方式就可以了。

 

 

欢迎关注微信公众号:Java的学习之路

里面资料非常全,从java初级到高级都有,视频,电子书,面试宝典,简历模板,经典案例,源码分析程序员故事以及解决bug方法。。。。应有尽有,可以推荐大家一起学习下!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值