java IO最关键的四个父类:InputStream、OutputStream、Reader、Writer。它们都是public abstract class。
InputSream和OutputStream对于数据的传送是以“byte”为单位的,而Reader和Writer对于数据的传送是以“character”为单位的。所以我们看到java.io包中的类大体上可以分为两大类,一类是以byte处理为主的Stream类,它们都是以XXXStream方式命名的;一类是以character处理为主的Reader/Writer类,它们都是以XXXReader或XXXWriter的方式命名的。
InputStream类方法简介:
InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法(具体方法参见API)。
如果我们要知道这个流中还有多少个byte的数据可以读取时可以调用available方法,注意的是如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用,另外它会抛出IOException异常,必须对此异常进行处理。
如果我们想跳过一些字节来读取的话可以调用skip方法来跳过一些字节来读取。skip方法所需要的参数是long型的,指出要跳过的字节数。
流的处理是单向的,如果想重新读取已经读过的数据,我们必须进行一些处理。有些InputStream是不支持重新读取的(也就是不允许重新定位读取指针),这样我们在进行重新读取前最好先调用markSupported方法来检查一下这个InputStream对象是否支持重定位指针,如果通过,那么我们就可以先使用mark方法来指定指针的位置,然后调用reset方法来让指针指到你要求得位置。(注意的是reset方法可能抛出IOException异常)。
还有就是我们在使用完后,必须对我们打开的流进行关闭(close)。
OutputStream方法的介绍:
OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。
还有一个常用的清除缓冲区的方法就是flush。
最好就是close方法
Reader方法的介绍
Reader是输入字符数据用的,它所提供的方法跟InputStream基本一样。不过Reader类没有提供available方法,取而代之的是ready方法。
Writer方法的介绍
Writer类有5个write方法,具体可以查看API。
学习完上面的四个最最基本的四个抽象类之后,我们就来学习Java的节点类,这个对于理解使用IO来说是至关重要的,下面就用一个表格来简单说明,若要详细了解请查看API。
文件(File)
FileInputStream
FileOutputStream
FileReader
FileWriter
内存(数组)
ByteArrayInputStream
ByteArrayOutputStream
CharArrayReader
CharArrayWriter
内存(字符串)
StringReader
StringWriter
管道(Pipe)
PipeInputStream
PipeOutputStream
PipeReader
PipeWriter
下面就是一些必须学习的类(java.io.File)
这个类对文件的操作是至关重要的,对于它的学习必须深入,它不是一仅仅是我们概念中的文件,而且包括目录。详细细节请查看API。
RandomAccessFile对于IO系统来说也是很重要的,它与我们前面介绍的四个抽象类没有关系,它是直接继承自Object类,用于对文件进行随机读取操作。
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/xyk0830/archive/2007/08/03/1724751.aspx
InputSream和OutputStream对于数据的传送是以“byte”为单位的,而Reader和Writer对于数据的传送是以“character”为单位的。所以我们看到java.io包中的类大体上可以分为两大类,一类是以byte处理为主的Stream类,它们都是以XXXStream方式命名的;一类是以character处理为主的Reader/Writer类,它们都是以XXXReader或XXXWriter的方式命名的。
InputStream类方法简介:
InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法(具体方法参见API)。
如果我们要知道这个流中还有多少个byte的数据可以读取时可以调用available方法,注意的是如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用,另外它会抛出IOException异常,必须对此异常进行处理。
如果我们想跳过一些字节来读取的话可以调用skip方法来跳过一些字节来读取。skip方法所需要的参数是long型的,指出要跳过的字节数。
流的处理是单向的,如果想重新读取已经读过的数据,我们必须进行一些处理。有些InputStream是不支持重新读取的(也就是不允许重新定位读取指针),这样我们在进行重新读取前最好先调用markSupported方法来检查一下这个InputStream对象是否支持重定位指针,如果通过,那么我们就可以先使用mark方法来指定指针的位置,然后调用reset方法来让指针指到你要求得位置。(注意的是reset方法可能抛出IOException异常)。
还有就是我们在使用完后,必须对我们打开的流进行关闭(close)。
OutputStream方法的介绍:
OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。
还有一个常用的清除缓冲区的方法就是flush。
最好就是close方法
Reader方法的介绍
Reader是输入字符数据用的,它所提供的方法跟InputStream基本一样。不过Reader类没有提供available方法,取而代之的是ready方法。
Writer方法的介绍
Writer类有5个write方法,具体可以查看API。
学习完上面的四个最最基本的四个抽象类之后,我们就来学习Java的节点类,这个对于理解使用IO来说是至关重要的,下面就用一个表格来简单说明,若要详细了解请查看API。
文件(File)
FileInputStream
FileOutputStream
FileReader
FileWriter
内存(数组)
ByteArrayInputStream
ByteArrayOutputStream
CharArrayReader
CharArrayWriter
内存(字符串)
StringReader
StringWriter
管道(Pipe)
PipeInputStream
PipeOutputStream
PipeReader
PipeWriter
下面就是一些必须学习的类(java.io.File)
这个类对文件的操作是至关重要的,对于它的学习必须深入,它不是一仅仅是我们概念中的文件,而且包括目录。详细细节请查看API。
RandomAccessFile对于IO系统来说也是很重要的,它与我们前面介绍的四个抽象类没有关系,它是直接继承自Object类,用于对文件进行随机读取操作。
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/xyk0830/archive/2007/08/03/1724751.aspx