J2SE快速进阶——IO流的四个基本抽象类InputStream、OutputStream、Reader、Writer

上文中对java.io包中的四个抽象类及其关系简单了解了一下,这里进一步对它们及其子类进一步总结一下。

在上篇博客末尾,贴出了Java中的整个IO家族,之后小编又重修改了一下,在之前的基础上,标识出了节点流与处理流(绿色为节点流,黄色为处理流)。

这里我们分别来说一下这四个抽象类。

细心的你也许会发现,大部分输入流和输出流都是成对的,有输入就有输出,一一对应。

InputStream

输入字节流InputStream的作用是标志那些从不同数据起源产生输入的类。

基本方法有:

int read()方法:读取一个字节,以整数的形式返回(0~255),如果返回-1,则已经到了输入流的末尾;

int read(byte[ ] b)方法:读取一系列字节并存储到一个数组b中,返回实际读取的字节数,如果读取前已经到了输入流的末尾,则返回-1;

int read(byte[ ] b,int off,int len)方法:读取至多len个字节并存储到一个字节数组b中,返回实际读取的字节数,如果读取前已经到了输入流的末尾,则返回-1;

void close()方法:关闭此输入流并释放与该流有关的系统资源。

long skip(long n)方法:跳过n个字节不读,直接跳到n个字节之后,返回实际跳过的字节数。

需要定义 InputStream 子类的应用程序必须总是提供返回下一个输入字节的方法。

OutputStream

输出字节流OutputStream接受输出字节并将这些字节发送到某个接收器。

基本方法有:

void write(int b)方法:将指定的字节写入此输出流。

void
write(byte[ ] b)方法:将b.length个字节从指定的byte数组写入此输出流。

void
write(byte[ ] b,int off,int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。

void close()方法:关闭此输出流并释放与此流有关的系统资源

void flush()方法:刷新此输出流并强制写出所有缓冲的输出字节。

需要定义
OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。

Reader

输入字符流Reader定义了以字符为单位读取数据的方法。

基本方法有:

int read()方法:读取一个字符并以整数的形式返回(0~255),如果已经到了输入流的末尾,则返回-1.

int
read(char[ ] cbuf)方法:读取一系列字符并存储到一个数组b中,返回实际读取的字符数,如果读取前已经到了输入流的末尾,则返回-1;

int
read(char[ ] cbuf,int off,int len)方法:读取至多len个字符并存储到一个数组cbuf中,返回实际读取的字节数,如果读取前已经到了输入流的末尾,则返回-1;

void close()方法:关闭此输入流并释放与该流有关的系统资源。

long skip(long n)方法:跳过n个字符不读,直接跳到n个字节之后,返回实际跳过的字符数。

子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

Writer

输出字符流Reader定义了以字符为单位写数据的方法。

基本方法有:

void write(int c)方法:向输出流中写入一个字符c。

void write(char[ ] cbuf)方法:向输出流中写入字符数组cbuf。

void write(String str)方法:向输出流中写入字符串str。

void write(char[ ] cbuf,int off,int
len)方法:将指定字符串数组cbuf中从偏移量off开始的len个字符写入此输出流。

void write(String str,int
off,int len)方法:将指定字符串str中从偏移量off开始的len个字符写入此输出流。

子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

虽然这四个抽象类都定义了相应的方法,但在进行数据的读写时,真正用到的都是其子类,子类通常会重新定义相关方法。后面将举例说明一些基本、常用的类。

时间: 2024-08-26 06:24:51

J2SE快速进阶——IO流的四个基本抽象类InputStream、OutputStream、Reader、Writer的相关文章

J2SE快速进阶——IO流

IO流的概念 IO流是从数据从一处流向另一处的抽象,就像水流从管道的一端流向另一端一样.在程序中,所有的数据都是以流的方式来传输和保存的. JDK所提供的所有流类位于java.io包中,并且这些类都分别继承自以下四种抽象流类:InputStream.OutputStream.Reader和Writer. 说明: InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位). OutputStream:继承自OutputStream的流都是程序用于

IO流(四):其他流

一.操作基本数据类型的流 (一)构造方法 1.数据输入流:DataInputStream(InputStream in) 2.数据输出流:DataOutputStream(OutputStream out) (二)方法 1.DataOutputStream: writeByte(10); writeShort(100); writeInt(1000); writeLong(10000); writeFloat(12.34F); writeDouble(12.56); writeChar('a')

java进阶 ------ IO流

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 流的概念和基本分类: 流的概念: 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据的源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流.这时候你就可以想象数据好像在这其中"流动一样". 流的分类: 按数据方向分:输入流和输出流 输入流:InputStream/Reader 输出流:Ou

java基础(二十一)IO流(四)

这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是比较清晰的!如果你有需要可以在评论中留下您的邮箱我看到一定会免费发给你的!感谢这个平台让我们大家共同进步吧!! 记住 程序员是无私的!!! 也非常欢迎到我的博客内观看 博客地址:http://www.cnblogs.com/duscl/ /* 1:登录注册IO版本案例(掌握) 要求,对着写一遍. c

JAVA进阶-IO流(1)

http://download.csdn.net/detail/qq285016127/7963747 Java对文件的操作API一般分为字节流 字符流 其为文件的读写API框架也是通过这个思想去扩展的.另外,在流的流向中也分为源流和宿流.如图(流的主体是根据流向决定,如输入InputStream/输出流OutPutStream) <1>从整个框架上看,io流的主要知识点分为: 1.字节流(输入FileInputStream/输出FileOutputStream) 1)字节流的构造一般都会通过

JAVA进阶-IO流(2)

<2>以下介绍一些7.0中比较高级的io流. 5.DirectoryStream根据给定路径列举当前文件 1)Files.newDirectoryStream(path,".*");第2个参数指定搜索的文件格式 /** * 列举目录/文件 * * @author Lean @date:2014-9-22 */ public class DirListing { public static void main(String[] args) { listDir("E:

Java IO流(四)

****************************转换流***************************** 作用: 把字节流 转换成 字符流 别人给你一个字节流, 但是我们想以字符为单位读和写,这时需要使用转换流,转换一下 字节 字符 输入 InputStream Reader InputStreamReader 输出 OutputStream Writer OutputStreamWriter 演示代码: package com.chapter13.演示字节读; import j

J2SE基础:12.IO流编程

继承体系: 1:字节流 以stream结尾的都是字节流.字节流用于读取二进制数据. 2:字符流 结尾都是以reader/writer结尾的. Write append(char c) :写入字符 write(char[] cbuf) write(String str) write(int c) flush() close() FileWrite(); 用于操作文件. BufferWriter(); 带缓冲的套接流 newLine() :输入一个换行符. Reader FileReader Buf

JAVA学习第五十课 — IO流(四)转换流

一.键盘录入 System.out:标准输出设备,控制台 System.in:标准输入设备,键盘 输入演示 输入字符串遇到回车,打印,输入over,输入结束 PS:键盘的录入只读取一个字节,先将字节拼一个字符串,所以需要一个容器,再参与over的判断 import java.io.*; public class Main { public static void main(String[] args) throws IOException { InputStream in = System.in