Java工程师必知词汇:字符流

对于服务端或者是客户端实质上传递的就是一种数据流的处理形式,而所谓的数据流指的就是字节数据。而对于这种流的处理形式在java.io包中提供有两类支持:

  • 字节处理流:OutputStream()(输入字节流)、InputStream()(输入字节流);
  • 字符处理流:Writer(输出字符流)、Reader(输入字符流);

所有的流操作都应采用如下统一的步骤进行,下面以文件处理的流程为例:

  • 如果进行文件读写操作,则一定要通过File类找到一个文件路径;
  • 通过字节流或字符流的子类为父类对象进行实例化;
  • 利用字节流或字符流中的方法实现数据的输入与输出操作;
  • 流的操作属于资源操作,资源操作必须进行关闭处理;

字符输出流:Writer
java.io包在JDK1.1时推出了字符输出流:Writer,这个类的定义如下:

public abstract class Writer extends Object implements Appendable, Closeable, Flushable{}

在Writer类中提供了几个输出的操作方法:

  • 输出字符数组:public void write(char[] cbuf) throws IOException;
  • 输出字符串:public void write(String str) throws IOException;
  • 追加内容:public Writer append(CharSequence csq) throws IOException;

Writer是字符流,字符处理的优势在于中文数据处理。
字符输入流:Reader
Reader是实现字符输入流的一种类型,其本身属于一个抽象类,这个类的定义如下:

public abstract class Reader extends Object implements Readable, Closeable{}

public interface Readable{}

Reader类中并没有像Writer类一样提供有整个字符串的输入处理操作,因此只能够利用字符数组来实现接收:

  • 读取单个字符:public int read() throws IOException;
  • 读取一组数据:public int read(char[] cbuf) throws IOException;
  • 读取数组部分数据:public abstract int read(char[] cbuf, int off, int len) throws IOException;

|参考资料|

[1] 阿里云大学Java视频课程

上一篇:Java工程师必知词汇:字节流


下一篇:什么是机器学习:一次权威定义之旅