Java 中的字符流类
原文:https://www.studytonight.com/java-file-io/characterstream-classes-in-java
在本教程中,我们将在 Java 中学习关于字符流的课程。引入这些类是为了克服ByteStream
类的缺点。ByteStream
类只能处理 8 位字节,与 Unicode 字符不兼容。另一方面,字符流类用于处理 16 位 Unicode 字符。
在本文中,我们将了解一下 Java 中 CharacterStream 类的概述。在接下来的教程中,我们将详细介绍每种方法。
有两个类Reader
和Writer
是所有字符流类的超类。这两个类都是抽象类,位于java.io
包中。
Java Reader
类
这些类支持从输入流中读取 16 位字符。Reader 类是一个抽象类,因此我们不能直接使用它,但是表中给出的以下类继承了 Reader 类,并覆盖了该类的所有方法。
Reader
类的所有子类如下:
班级 | 描述 |
---|---|
BufferedReader |
这个类提供了从缓冲区读取字符的方法。 |
CharArrayReader |
这个类提供了从字符数组中读取字符的方法。 |
FileReader |
这个类提供了从文件中读取字符的方法。 |
FilterReader |
这个类提供了从基础字符输入流中读取字符的方法。 |
InputStreamReader |
此类提供将字节转换为字符的方法。 |
PipedReader |
此类提供从连接的管道输出流中读取字符的方法。 |
StringReader |
此类提供从字符串中读取字符的方法。 |
读者课的方法
Reader
类的所有方法见下表。
方法 | 描述 |
---|---|
int read() |
此方法返回输入中下一个字符的整数表示形式。如果遇到输入结束,则返回-1。 |
int read(char buffer[]) |
此方法用于读取指定的缓冲区。它返回成功读取的字符总数。如果遇到输入结束,则返回-1。 |
int read(char buffer[], int loc, int nChars) |
此方法用于从指定位置的缓冲区中读取指定的 nChars。它返回成功读取的字符总数。 |
void mark(int nchars) |
此方法用于标记输入流中的当前位置,直到读取 nChars 字符。 |
void reset() |
此方法用于将输入指针重置为先前设置的标记。 |
long skip(long nChars) |
此方法用于从输入流中跳过指定的字符,并返回跳过的字符数。 |
boolean ready() |
如果下一个输入请求准备好了,这个方法返回一个布尔值 true。否则,它返回 false。 |
void close() |
此方法用于关闭输入流。但是,如果程序试图访问输入,它会生成 IOException。 |
Java Writer
类
此类用于将字符写入输出流。这些字符将采用 16 位 Unicode 格式。与 Reader 类相同,Writer 类也是一个抽象类,不能实例化。Writer 类的子类,用于在输出流中写入字符。
下表给出了 Writer 类的所有子类。
班级 | 描述 |
---|---|
BufferedWriter |
此类提供将字符写入缓冲区的方法。 |
FileWriter |
这个类提供了向文件中写入字符的方法。 |
CharArrayWriter |
此类提供将字符写入字符数组的方法。 |
OutpuStreamWriter |
此类提供将字节转换为字符的方法。 |
PipedWriter |
这个类提供了将字符写入管道输出流的方法。 |
StringWriter |
此类提供将字符写入字符串的方法。 |
写作课的方法
下表给出了 Writer 类的方法。
方法 | 描述 |
---|---|
void write() |
此方法用于将数据写入输出流。 |
void write(int i) |
此方法用于将单个字符写入输出流。 |
void write(char buffer[]) |
此方法用于将字符数组写入输出流。 |
void write(char buffer [],int loc, int nChars) |
此方法用于将 nChars 字符从指定位置写入字符数组。 |
void close () |
此方法用于关闭输出流。但是,如果在关闭输出流后尝试写入输出流,则会生成 IOException。 |
void flush () |
此方法用于刷新输出流并写入等待的缓冲字符。 |
结论
在教程中,我们研究了 Java 中CharacterStream
类的概述。这些类属于 java.io 包。引入这个类是为了克服ByteStream
类的缺点。ByteStream
类只能处理 8 位字节,并且与 Unicode 字符不兼容。