CSDN博客

img PaleSting

初级 Java I/O 综述(一)

发表于2004/1/14 11:11:00  1909人阅读

Java IO 综述

看论坛里面有人问有关Java IO方面的东西,小弟不才。写些东西,希望给大家一些启发,也算是抛砖引玉吧。^_^

JavaIO包支持Java的基本输入/输出(I/O)系统,也包括文件的输入和输出。JavaIO部分,我打算分两部分阐述,首先我们讨论IO子系统的基础,然后再讨论深入的部分。

如果你有Java编码的经验,你会发现这些程序里面并不是用到很多的IO子系统。事实上,除了Print()和Println(),基本上没有用到其他的IO方法。原因很简单:多数实际的Java应用程序并不是基于文本、控制台的,而是基于图形化的Appliaction,这些程序依赖于用户的交互的Java AWTSwing类。同时,Java对控制台IO程序的支持并不是很好,甚至再简单的范例中都有些难以使用,但基于文本、控制台的Java 程序也需要我们来了解。

Java IO通过Stream(流)来实现。关于流,你可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的等。就好像管道里面可以流动水,也可以流动石油一样。而对应于流还有一个概念:输入、输出设备。这些设备可以是磁盘文件、键盘(输入设备)、显示器(输出设备)、打印机(输出设备)、网络套接字等等。

 

下面,我们就来了解“流”。

Java中定义了两种类型的流:字节型,和字符型。

字节流:处理字节的输入和输出。包括读写二进制数据等方面的内容。

字符流:处理字符的输入和输出。他采用的是Unicode编码,可以实现国际化。使用字符流的另外一个好处就是:字符流比字节流更有效率。

 

:::::::::::::::::::::::::::::::字节流:::::::::::::::::::::::::::::::::::::

字节流包含两个顶层抽象类:InputStreamOutputStream。如下图所示。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

               图1InputStream抽象类

              

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                图2OutpurStream抽象类

 

     从上面的两个抓图(抓图自J2SE 142 DOC)中,我们可以看出一下几点:

      1:字节流的两个顶层类是抽象类,分别是:InputStreamOutputStream

      2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输出。

 

下面简单介绍字节流的几个常用子类:::

字节流类

功能简单介绍

DataInputStream

包含了读取Java标准数据类型的输入流

DataOutputStream

包含了写Java标准数据类型的输出流

ByteArrayInputStream

从字节数组读取的输入流

ByteArrayOutputStream

写入字节数组的输出流

FileInputStream

从文件读入的输入流

FileOutputStream

写入文件的输出流

PrintStream

包含最常见的Print()和Println()的输出流

PushbackInputStream

返回一个字节到输入流,主要用于编译器的实现

PipedInputStream

输出管道

PipedOutputStream

输入管道

SequenceInputStream

n个输入流联合起来,一个接一个按一定顺序读取

RandomAccessFile

随机访问文件

BufferInputStream

缓冲输入流

BufferOutputStream

缓冲输出流

FilterInputStream

实现了InputStream Interface

FilterOutputStream

实现了OutputStream Interface

InputStream

抽象类,描述流的输入

OutputStream

抽象类,描述流的输入

 

      抽象类InputStreamOutpurStream定义了实用的方法,其中最主要的是read()和

write()。这两个方法在InputStreamOutputStream中声明为抽象方法,由子流类overwrite实现。

 

0 0

相关博文

我的热门文章

img
取 消
img