Java.io包含一组支持读写算法的流类,流类被分为两个层次结构,包括字符流和字节流。
一、字符流
Reader和Writer是字符流的抽象超类,可以读写16位字符。具体使用可以参见Java API
二、字节流
InputStream和OutputStream是字节流的抽象超类,可以读写8位的字节。具体的使用可以参见Java API
三、流的使用
1、文件流的使用
这是实例代码,简单的表示文件流的使用
File inputFile=new File("abc.txt");
FileReader in=new FileReader(inputFile);
2、管道流的使用
管道用于将一个线程的输出连接到另一个线程的输入
3、流的封装
将读入写出分别封装在BufferReader和PrintWriter对象中,以调用他们的readLine和println方法,这样进行封装可以组合流的各种功能
-------------------------------------------------------------------------------------------------------------------------------------------------
分割线
-------------------------------------------------------------------------------------------------------------------------------------------------
Java输入输出的学习十分枯燥,但是几乎每一本介绍Java的书上都会或多或少的介绍Java的输入输出,足见其重要性。这里主要针对文件的输入输出进行比较详细的讨论,其他领域的输入和输出类比可得。
一、FileInputStream和FileOutputStream
使用时,利用new FileOutputStream(new File(args[0]))或new FileInputStream(new File(args[0]))建立对象,输入输出流就被打开,使用各自的close()方法关闭输入输出流。
使用read()函数一次读入一个字节,或者read(buffer)一次读入字节数组buffer中的所有数据
二、BufferedInputStream和BufferedOutputStream
可以为InputStream和OutputStream类的对象增加缓存区功能,新建方法为new BufferInputStream(new FileInputStream(new File(args[0])))
read和write方法读取和输出字节数组中的数据。flush()方法一次把缓冲区中的数据全部写出目的流中。
三、DataInputStream和DataOutputStream
对Java中基本的数据类型进行读入和写出。新建方法为new DataInputStream(new FileInputStream)。在进行完所有操作之后使用close()方法关闭流。使用readUTF或readInt等方法读入对应的数据。但是这两个方法并没有改变FileInputStream和FileOutputStream的行为
四、ObjectInputStream和ObjectOutputStream
将对象直接存储到文件。必须实现java.io.Serializable接口