对于服务端或者是客户端实质上传递的就是一种数据流的处理形式,而所谓的数据流指的就是字节数据。而对于这种流的处理形式在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视频课程