字节流与字符流

在说字节流与字符流之前,我们需要先看一下输入流与输出流。实际上他们只是一对互为逆过程的行为,而这两个行为所操纵的具体内容,就是字符流与字节流。

从宏观上来说,程序可以直接通过字节流来操纵文件内容。但如果使用的是字符流,则需要先将字符流写入缓存,再通过缓存来修改文件。
具体表现在Java上:当你使用字节流来修改文件时,即使不关闭流,文件的内容一样会被修改。但当你使用字符流来对文件修改是,如果不关闭流,则文件不会被修改。

另外Java的网络编程中必须使用字节流来传输文件。

那么java中的常用的字节流与字符流的类都是哪些呢?

字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter

字节流与字符流的输入与输出全部由这四个抽象类来实现。
接下来是他们的实现

InputStreamOutputStream
FileInputStream、FilerInputStream、ObjectInputStream、ByteArrayInputStreamFileOutputStream、FilerOutputStream、ObjectOutputStream、ByteArrayOutputStream

FilerInputStream有两个实现类:BufferInputStream、DataInputStream。
FilerOutputStream有三个实现类:BufferOutPutStream、DataOutputStream、PrintStream。
从命名可以看出来字节流的输出与输出所执行的功能都大致相同,那么字符流的类实现也就很显而易见了。

ReaderWriter
BufferedReader、 InputStreamReader->FileReader、StringReaderBufferedWriter、OutputStreamWriter->UFileWrite、PrintWriter、StringWriter

文件输入输出流:FileInputStream、FileOutputStream
对象输入输出流:ObjectInputStream、ObjectOutputStream

文件输入输出流:FileReader FileWriter
缓存的文件输入输出流:BufferedReader BufferedWriter

接下来我们就可以想这样根据名字大概判断其用法,再通过API文档具体查找就行了。

只是这个缓存文件输入输出流,我们需要着重说一下。
我们可以通过名字看出来 InputStreamReader与OutputStreamWriter是可以将字节流与字符流进行转换的两个类,InputSreamReader用于将一个字节流中的字节解码成字符。
而BufferedReader BufferedWriter则是分别对两者进行了包装,如果将InputStream与OutputStreamWriter看做两条河流的话,那么我们可以将这两者理解为对河流的水进行加工的类。通过包装将会多出一些更易用的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值