优秀企业网站模板下载,百度pc端提升排名,今晚12点上海又要封控了吗,红衫中国网站建设8. 字符流 Writer/Reader Java 中字符是采用 Unicode 标准#xff0c;一个字符是 16 位#xff0c;即一个字符使用两个字节来表示。为此#xff0c;JAVA 中引入了处理字符的流。
1#xff09;Reader抽象类 用于读取字符流的抽象类。子类必须实现的方法只有 read (char [],…8. 字符流 Writer/Reader Java 中字符是采用 Unicode 标准一个字符是 16 位即一个字符使用两个字节来表示。为此JAVA 中引入了处理字符的流。
1Reader抽象类 用于读取字符流的抽象类。子类必须实现的方法只有 read (char [], int, int) 和 close ()。但是多数子类将重写此处定义的一些方法以提供更高的效率和 / 或其他功能。 1FileReader : 与 FileInputStream 对应主要用来读取字符文件使用缺省的字符编码有三种构造函数 (1将文件名作为字符串 FileReader fnew FileReader (“c:/temp.txt”); (2构造函数将 File 对象作为其参数。 File fnew file(“c:/temp.txt”); FileReader f1new FileReader(f); (3) 构造函数将 FileDescriptor 对象作为参数 FileDescriptor() fdnew FileDescriptor() FileReader f2new FileReader(fd); (1) 用指定字符数组作为参数CharArrayReader (char []) (2) 将字符数组作为输入流CharArrayReader (char [], int, int) 读取字符串构造函数如下 public StringReader (String s); 2CharArrayReader与 ByteArrayInputStream 对应 3 StringReader : 与 StringBufferInputStream 对应 4 InputStreamReader 从输入流读取字节在将它们转换成字符Public inputstreamReader (inputstream is); 5 FilterReader: 允许过滤字符流 protected filterReader(Reader r); 6 BufferReader : 接受 Reader 对象作为参数并对其添加字符缓冲器使用 readline () 方法可以读取一行。 Public BufferReader(Reader r); 主要方法
// 读取一个字符返回值为读取的字符
public int read () throws IOException; // 读取一系列字符到数组cbuf[]中返回值为实际读取的字符的数量
public int read (char cbuf []) throws IOException;// 读取 len 个字符从数组 cbuf [] 的下标 off 处开始存放返回值为实际读取的字符数量该方法必须由子类实现
public abstract int read(char cbuf[],int off,int len) throws IOException;
2Writer 抽象类
写入字符流的抽象类。子类必须实现的方法仅有 write (char [], int, int)、flush () 和 close ()。但是多数子类将重写此处定义的一些方法以提供更高的效率和 / 或其他功能。 其子类如下 1 FileWrite: 与 FileOutputStream 对应 将字符类型数据写入文件使用缺省字符编码和缓冲器大小。 Public FileWrite(file f); 2) chararrayWrite: 与 ByteArrayOutputStream 对应将字符缓冲器用作输出。 Public CharArrayWrite(); 3) PrintWrite: 生成格式化输出 public PrintWriter(outputstream os); 4) filterWriter: 用于写入过滤字符流 protected FilterWriter(Writer w); 5) PipedWriter与 PipedOutputStream 对应 6) StringWriter无与之对应的以字节为导向的 stream 主要方法 (1) public void write(int c) throws IOException // 将整型值 c 的低 16 位写入输出流 (2) public void write(char cbuf[]) throws IOException // 将字符数组 cbuf [] 写入输出流 (3) public abstract void write(char cbuf[],int off,int len) throws IOException // 将字符数组 cbuf [] 中的从索引为 off 的位置处开始的 len 个字符写入输出流 (4) public void write(String str) throws IOException // 将字符串 str 中的字符写入输出流 (5) public void write(String str,int off,int len) throws IOException // 将字符串 str 中从索引 off 开始处的 len 个字符写入输出流 (6) flush( ) // 刷空输出流并输出所有被缓存的字节。 (7)close() 关闭流 public abstract void close() throws IOException
3InputStream 与 Reader 差别 OutputStream 与 Writer 差别 InputStream 和 OutputStream 类处理的是字节流数据流中的最小单位是字节 (8 个 bit) Reader 与 Writer 处理的是字符流在处理字符流时涉及了字符编码的转换问题
import java.io.*;public class EncodeTest { private static void readBuff(byte [] buff) throws IOException { ByteArrayInputStream in new ByteArrayInputStream(buff); int data; while((datain.read())!-1) System.out.print(data ); System.out.println(); in.close(); } public static void main(String args[]) throws IOException { System.out.println(内存中采用unicode字符编码 ); char c好; int lowBitc0xFF; int highBit(c0xFF00)8; System.out.println(lowBit highBit); String s好; System.out.println(本地操作系统默认字符编码); readBuff(s.getBytes()); System.out.println(采用GBK字符编码); readBuff(s.getBytes(GBK)); System.out.println(采用UTF-8字符编码); readBuff(s.getBytes(UTF-8)); }
} Reader 类能够将输入流中采用其他编码类型的字符转换为 Unicode 字符然后在内存中为其分配内存 Writer 类能够将内存中的 Unicode 字符转换为其他编码类型的字符再写到输出流中。 9. IOException 异常类的子类
1.public class EOFException 非正常到达文件尾或输入流尾时抛出这种类型的异常。 2.public class FileNotFoundException 当文件找不到时抛出的异常。 3.public class InterruptedIOException 当 I/O 操作被中断时抛出这种类型的异常。