Java的流式输入/输出建立在四个抽象类的基础上。InputStream,OutputStream,Reader,Writer。他们用来创建具体流式子类。
尽管程序通过具体子类执行输入/输出操作,但顶层的类定义了所有流类的基本通用功能。
InputStream和OutputStream设计成字节流类。Reader和Writer为字符流设计。
字节流类和字符流类形成分离的层次结构。
一般来说,处理字符或字符串时应使用字符串流类,处理字节或二进制对象时应用字节流类。
一般在操作文件流时,不管是字节流还是字符流都可以按照以下的方式进行。
1 使用File类找到一个文件
2 通过File类的对象去实例化字节流或字符流的子类
3 进行字节(字符)的读,写操作
4 关闭文件流
字节流
字节流类为处理字节式输入/输出提供了丰富的环境。一个字节流可以和其他任何类型的对象并用,包括二进制数据。
这样的多功能性使得字节流对很多类型的程序都很重要。因为字节流以InputStream和OutputStream为顶层,下面讨论这俩个类。
InputStream(输入字节流)
InputStream是定义了Java流式字节输入模式的抽象类。该类的所有方法在出错的条件下都会引发一个IOException异常。
OutputStream(输出字节流)
OutputStream是定义了流式字节输出模式的抽象类。该类的所有方法返回一个void值并且在出错情况下引发一个IOException异常。
FileInputStream(文件输入流)
FileInputStream类创建一个能从文件读取自己的InputStream类,他的俩个常用的构造方法如下:
FileInputStream(String filepath)
FileInputStream的(File fileObj)
这俩个构造方法都能引发FileNotFoundException异常。
这里,filepath是文件的绝对路径,fileObj是描述该文件的File对象。
下面的例子创建了俩个使用同样磁盘文件且各含一个上面所描述的构造方法的FileInputStream类:
InputStream f0 = new FileInputStream(”c:\\test.txt“);
File f = new File(”c:\\test.txt“);
InputStream f1 = new FileInputStream(f);
356/499