第9章 输入与输出
第9章 输入与输出
、输入输出类库 Java的输入输出功能必须借助于输 入输出类库钉ava.io包来实现,这个包 中的类大部分是用来完成流式输入 输出的流类
一、输入输出类库 Java的输入输出功能必须借助于输 入输出类库Java.io包来实现,这个包 中的类大部分是用来完成流式输入 输出的流类
流 流是指在计算机的输入与输出之间的数据 的序列,而Java中的数据流有位流(字节流) 和字符流之分; 就流的运动方向而言,流可分为输入流(1 nput stream)和输出流(output stream),输 入流代表从外设流入计算机的数据序列;输 出流代表从计算机流向外设的数据序列
流 流是指在计算机的输入与输出之间的数据 的序列,而Java中的数据流有位流(字节流) 和字符流之分; 就流的运动方向而言,流可分为输入流(i nput stream)和输出流(output stream),输 入流代表从外设流入计算机的数据序列;输 出流代表从计算机流向外设的数据序列
/O流的层次 1. 字节流: 从nputStream和QutputStream派生出来 的一系列类。这类流以字节be为基本 处理单位。 2.字符流: 从Reader Writer派生出的一系列类, 这类流以16位的Unicode码表示的字符为 基本处理单位
1.字节流: 从InputStream和OutputStream派生出来 的一系列类。这类流以字节(byte)为基本 处理单位。 2.字符流: 从Reader和Writer派生出的一系列类, 这类流以16位的Unicode码表示的字符为 基本处理单位。 一、 I/O流的层次
二、InputStream和OutputStream 1.InputStream ◇从流中读取数据: int read(上/读取一个字节,返回值为所读的字节 int read(byte bl):/读取多个字节,放置到字节数组b中, 通常读取的字书数量为b的长度,返回值为实际读取的 字节的数量。 int read(byte b,int off,int len):∥读取Ien个字节,放置 到以下标0f开始字节数组b中,返回值为实际读取的 字节的数量。 int available():/返回值为流中尚未读取的字节的数量 long skip(long n):/读指针跳过n个字节不读,返回值 为实际跳过的字节数量
二、InputStream 和OutputStream 1.InputStream ◇ 从流中读取数据: int read( ); //读取一个字节,返回值为所读的字节 int read( byte b[ ] ); //读取多个字节,放置到字节数组b中, 通常读取的字节数量为b的长度,返回值为实际读取的 字节的数量。 int read( byte b[ ], int off, int len ); //读取len个字节,放置 到以下标off开始字节数组b中,返回值为实际读取的 字节的数量。 int available( ); //返回值为流中尚未读取的字节的数量 long skip( long n ); //读指针跳过n个字节不读,返回值 为实际跳过的字节数量
◇关闭流: close();流操作完毕后必须关闭 ◇使用输入流中的标记: void mark(int readlimit);./∥记录当前读指针所在 位置,readlimit表示读指针读出readlimit个字 节后所标记的指针位置才失效 void reset(); /把读指针重新指向用mark 方法所记录的位置 boolean markSupported();/当前的流是否支持 读指针的记录功能
◇ 关闭流: close( ); //流操作完毕后必须关闭 ◇ 使用输入流中的标记: void mark( int readlimit ); //记录当前读指针所在 位置,readlimit表示读指针读出readlimit个字 节后所标记的指针位置才失效 void reset( ); //把读指针重新指向用mark 方法所记录的位置 boolean markSupported( ); //当前的流是否支持 读指针的记录功能
FileInputStream LineNumberInputStream PipedInputStream DataInputstredm FilterInputStream InputStream BufferedInputStream ByteArrayInputStream PushbackInputStream SequenceInputStream StringBufferInputStream ObjectInputStream InputStream类派生结构
InputStream类派生结构
OutputStream ◇输出数据: void write(int b); 往流中写一个字节b void write(byte b[]);∥往流中写一个字节数组b void write(byte b[,int off,,int len):/把字节数组b 中从下标of开始,长度为len的字节写入流中 ◇flush() /刷空输出流,并输出所有 被缓存的字节 由于某些流支持缓存功能,该方法将把缓存中所有 内蓉强制输出到流审。 ◇关闭流: close(); 流操作完毕后必须关闭
2.OutputStream ◇ 输出数据: void write( int b ); //往流中写一个字节b void write( byte b[ ] ); //往流中写一个字节数组b void write( byte b[ ], int off, int len ); //把字节数组b 中从下标off开始,长度为len的字节写入流中 ◇ flush( ) //刷空输出流,并输出所有 被缓存的字节 由于某些流支持缓存功能,该方法将把缓存中所有 内容强制输出到流中。 ◇ 关闭流: close( ); //流操作完毕后必须关闭
FileOutputStream PipedoutputStream DataOutputStream FilterOutputStream BufferedoutputStream OutputStream ByteArrayOutputStream PrintStream ObjectoutputStream OutputStream类的派生结构
OutputStream类的派生结构
三、Reader和Vriter 这两个类是抽象类,只是提供了一系列用于字符 流处理的接口,不能生成这两个类的实例,只能通过 衡角宙它行派生出来的字类对象籴处理学符流。 1.Reader类是处理所有字符流输入类的父类。 ◇读取字符 public int read()throws IOException; public int read(char cbuf[l)throws IOException; public abstract int read(char cbuf[],int off,int len) throws IOException;
三、Reader 和Writer 这两个类是抽象类,只是提供了一系列用于字符 流处理的接口,不能生成这两个类的实例,只能通过 使用由它们派生出来的子类对象来处理字符流。 1.Reader类是处理所有字符流输入类的父类。 ◇ 读取字符 public int read() throws IOException; public int read(char cbuf[]) throws IOException; public abstract int read(char cbuf[],int off,int len) throws IOException;