java学习笔记7 流
流类:
Java 的流式输入/输出建立在四个抽象类的基础上:InputStream, OutputStream,Reader 和 Writer。它们用来创建具体流式子类。
InputStream 和 OutputStream 设计成字节流类。Reader 和 Writer 为字符流设计。字节流类和字符流类形成分离的层次结构。一般说来,处理字符或字符串时应使用字符流类,处理字节或二进制对象时应用字节流类。
一般在操作文件流时,不管是字节流还是字符流都可以按照以下的方式进行:
1 、 使用 File 类找到一个文件
2 、 通过 File 类的对象去实例化字节流或字符流的子类
3 、 进行字节(字符)的读、写操作
4 、 关闭文件流
InputStream 是一个定义了 Java 流式字节输入模式的抽象类。该类的所有方法在出错条件下都会引发一个 IOException 异常。
InputStream定义的方法

OutputStream(输出字节流)
OutputStream是定义了流式字节输出模式的抽象类。该类的所有方法返回一个void值并且在出错情况下引发一个IOException异常。
OutputStream定义的方法

注意:上两个表中的多数方法由InputStream 和 OutputStream的子类来实现,但
mark( )和 reset( )方法除外。
FileInputStream(文件输入流)
FileInputStream 类创建一个能从文件读取字节的InputStream 类, 它的两个常用的构造方法如下:
FileInputStream(String filepath)
FileInputStream(File fileObj)
这两个构造方法都能引发FileNotFoundException异常。这里,filepath 是文件的绝对路径,fileObj是描述该文件的File对象。
下面的例子创建了两个使用同样磁盘文件且各含一个上面所描述的构造方法的FileInputStreams类:
InputStream f0 = newFileInputStream("c:\\test.txt") ;
File f = newFile("c:\\test.txt");
InputStream f1 = new FileInputStream(f);
FileOutputStream(文件输出流)
FileOutputStream 创建了一个可以向文件写入字节的类 OutputStream,它常用的构造方法如下:FileOutputStream(StringfilePath)
FileOutputStream(File fileObj)
FileOutputStream(String filePath, boolean append)
它们可以引发IOException 或SecurityException 异常。这里 filePath 是文件的绝对路径,fileObj 是描述该文件的 File 对象。如果 append 为 true,文件则以设置搜索路径模式打开。FileOutputStream 的创建不依赖于文件是否存在。在创建对象时,FileOutputStream 会在打开输出文件之前就创建它。
代码示例:
import java.io.*;public class StreamDemo { publicstatic void main(String[] args) { Filef = new File("e:\\temp.txt"); FileOutputStreamout = null; try{ out = new FileOutputStream(f); } catch (FileNotFoundException e) { e.printStackTrace(); } byteb[] = "Hello world".getBytes(); try{ out.write(b); } catch (IOException e1) { e1.printStackTrace(); } try{ out.close(); } catch (IOException e2) { e2.printStackTrace(); } InputStreamin = null; try{ in = new FileInputStream(f); } catch (FileNotFoundException e3) { e3.printStackTrace(); } byteb1[] = new byte[1024]; inti = 0; try{ i=in.read(b1); }catch (IOException e4) { e4.printStackTrace(); } try{ in.close(); }catch (IOException e5) { e5.printStackTrace(); } System.out.println(newString (b1,0,i)); }}