流:流一般分为输入流(InputStream)和输出流(OutputStream)两类.但这种划分并不是绝对的.
在Java开发环境中,主要是由包http://java.io中提供的一系列的类和接口来实现输入和输出处理.标准输入和输出处理则是由包java.lang中提供的类来处理的,但这些类又都是从包http://java.io中的类继承而来.(按照我的理解以我为中心,输入就是从别人到我,输出就是从我到别人)
字节流
InputStream
ByteArrayInputStream
FileInputStream
FilterInputStream
BufferedInputStream
DataInputStream
LineNumberInputStream
PushbackInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
StringBufferInputStream
OutputStream
ByteArrayOutputStream
FileOutStream
FilterOutputStream
BufferedOutputStream
DataOutputStream
PrintStream
ObjectOutputStream
PipedOutputStream
字节流的基类
Java中每一种字节流的基本功能依赖于基本类InputStream和OutputStream,它们是抽象类,不能直接使用.
属于InputStream类的方法有:
read():从流中读入数据
int read():从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)
int read(byte[] a ): 读多个字节到数组中,填满整个数组.
int read(byte[] a,int off,int len):从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取的字节数.
这三个方法,若返回-1,表明流结束,否则,返回实际读取的字节数.
skip():跳过流中若干字节数
available():返回流中可用字节数
mark():在流中标记一个位置
reset():返回标记过得位置
markSupport():是否支持标记和复位操作
close():关闭流
属于outputStream类的方法有
write(int a): 将一个整数输出到流中(只输出低位字节,为抽象方法)
write(byte[] a):将字节数组中的数据输出到流中
write(byte[] a , int off , int len): 将数组b中从off指定的位置开始,长度为len的数据输出到流中
flush():刷空输出流,并将缓冲区中的数据强制送出
close():关闭流
Writer的方法:wtite(String s),write(String s , int off , int len)
2.文件流
用于读写本地文件系统中的文件:FileInputStream,FileOutputStream
- FileInputSteam类用来打开一个输入文件,若要打开的文件不存在,则会产生例外FileNotFoundException,这是一个非运行时例外,必须捕获或声明抛弃;
- FileOutputStream类用来打开一个输出文件,若要打开的文件不存在,则会创建一个新的文件,否则原文件的内容会被新写入的内容所覆盖
- 在进行文件的读/写操作时,会产生非运行时例外IO Exception,必须捕获或声明抛弃(其他的输入/输出流处理时也同样需要进行输入/输出例外处理)
文件流的构造方法
FileInputStream(File f) 打开一个以f描述的文件作为输入.
FileInputStream(String name) 打开一个文件路径名为name的文件作为输入.
FileOutputStream(File f) 创建一个以f描述的文件作为输出,文件如果已经存在,则其内容被清空。
FileOutputStream(String name) 创建一个文件路径名为name的文件作为输出,文件如果已经存在,则其内容被清空。
FileOutputStream(String name, boolean append) 创建一个文件路径名为name的文件作 为输出,文件如果已经存在,则在该输出上输出的内容被接到原有内容之后。