FileInputStream(String filePath);//文件的完整路径
FileInputStream(File fileObj);//文件的File对象
这两个构造器都会抛出FileNotFoundException异常。
FileOutputStream继承于OutputStream,该对象可以将字节写入文件。
构造函数:
FileOutputStream(String filePath)
FileOutputStream(String filePath,booleanappend)
FileOutputStream(File fileObj)
FileOutputStream(File fileObj,boolean append)
和FileInputStream一样,不同的是有一个append参数,这个参数如果为true,则以追加的方式打开文件,否则,这个方法会删除同名的已有文件创建一个新的输出流。另外,如果试图打开只读文件会抛出异常。
3、字节缓冲流
对于面向字节的流,缓冲流通过将内存缓冲区附加到IO系统来扩展过滤流。这种流允许java一次对多个字节执行多次IO操作,从而提升性能。
因为可以使用缓冲区,所以略过、标记、或重置流都是可能发生的,BufferedInputStream类、BufferedOutputStream类、PushbackInputStream类都实现了缓冲流。
BufferedInputStream类
缓冲IO是很常见的性能优化手段,BufferedInputStream类允许将任何InputStream对象封装到缓冲流中以提高性能,因为带缓冲区的输入流从流中读入字符时,不会每次都对设备访问。
构造函数:
BufferedInputStream(InputStream inputStream)
BufferedInputStream(InputStream inputStream,int bufSize)
缓冲输入流除了任何InputStream都实现了的read()和skip()方法外,还支持mark()和reset()方法。
BufferedOutputStream类
创建一个带缓冲区的输出流,带缓冲区的输出流在收集要写出的字符时,不会每次都对设备访问,当缓冲区填满或者当流被冲刷时,数据就被写出,因此调用flush()方法才是数据刷盘。
构造函数:
BufferedOutputStream(OutputStream outputStream)
BufferedOutputStream(OutputStream outputStream,int bufSize)
PushbackInputStream类
一个可以预览字节的输入流,它读取字节,但并不破坏他们,读取后可以再将他们回推到输入流中,下次调用read()时可以再次被读取。
构造函数:
PushbackInputStream(InputStream inputStream)
PushbackInputStream(InputStream inputStream,int num)
第一个构造函数创建的流对象允许将一个字节回推到输入流。
第二个构造函数创建的流对象具有一个长度为num的回推缓冲区,从而允许将多个字节回推到输入流中。
4、打印流
PrintStream类
用的最多的System.out.println()就是PrintStream类里的方法。
PrintStream最初的目的是为了以可视化格式打印所有的基本数据类型以及String对象,它的最重要的两个方法:print()和println()可以打印出各种类型,如果参数不是基本类型,那么会自动调用对象的toString()方法并显示结果。
五、字符流
1、顶级抽象类
Reader字符流的顶级抽象类,定义了java字符流的输入模型。
方法列表:
方法
描述
int read()
读取一个字符,返回表示该字符的证书,如果达到文件末尾,则返回-1
int read(char buff[])
读取buff.length个字符,返回成功读取的字符数,如果达到文件末尾,则返回-1
int read(CharBuffer buff)
读取字符,返回成功读取的字符数,如果达到文件末尾,则返回-1
int read(char buff[],int offset,int num)
从buff[offset]开始读,读取num个字符,如果文件达到末尾,则返回-1
long skip(long num)
跳过num个字符,返回实际跳过的字符数
void close()
关闭输入流,如果试图继续读取,会产生IO异常
boolean ready()
如果下一个输入请求不等待,就返回true,否则返回false
boolean markSupported()
如果这个流支持mark或者reset,就返回true
void mark(int num)
在当前流的位置放置标记,该标记在reset()之前一直有效
void reset()
将输入指针重新设置为前面设置的标记位置
Writer字符流的顶级抽象类,定义了java字符流的输出模型。
方法列表:
方法
描述
Writer append(char cn)
将cn追加到调用输出流的末尾,返回对调用流的引用
Writer append(CharSequence chars)
将chars追加到调用输出流的末尾,返回对调用流的引用
Writer append(CharSequence chars,int begin,int end)
将chars从begin到end-1之间的字符追加到输出流的末尾,返回对调用流的引用
void close()
关闭输出流,如果试图继续向其中写入内容,将产生IO异常
void flush()
完成输出状态,从而清空所有缓冲区,即刷新输出缓冲区
void write(int ch)
写入一个字符到输出流中
void write(char buff[])
将整个字符数组写入输出流中
void write(char buff[],int offset,int num)
将buff数组中从buff[offset]开始的num个字符写入输出流中
void write(String str)
将str写到输出流中
void write(String str,int offset,int num)
将字符串str中从offset开始写,写num个字符
2、文件流
FileReader类
FileReader类可以创建用于读取文件内容的Reader对象。
注意:FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。
构造函数:
FileReader(String filePath)
FileReader(File fileObj)
FileWriter类
FileWriter类可以创建能够用于写入文件的Writer对象。
文件是否可用或是否可以被创建取决于底层平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
FileWriter用于写入字符流。要写入原始字节流,请考虑使用FileOutputStream。
构造函数:
FileWriter(String filePath)
FileWriter(String filePath,booleanappend)
FileWriter(File fileObj)
FileWriter(File fileObj,boolean append)
append参数代表是否追加到文件末尾。
3、缓冲流
BufferedReader类
BufferedReader类通过缓冲输入提高性能,该类具有两个构造函数:
BufferedReader(Reader inputStream)
BufferedReader(Reader inputStream,int bufSize)
第二个构造函数指定创建bufSize大小的缓冲字符流。
与面向字节的流一样,缓冲的输入字符流也实现了mark()和reset()方法,并且markSupported()会返回true.
BufferedWriter类
BufferedWriter是缓冲输出的Writer,使用BufferedWriter可以通过减少实际向输出设备物理的写入数据的次数来提高性能。
构造函数:
BufferedWriter(Writer outputStream)
BufferedWriter(Writer outputStream,int bufSize)
第一种形式创建的缓冲流使用具有默认大小的缓冲区,在第二种形式中缓冲区的大小是由bufSize指定的。
4、打印流
PrintWriter类
PrintWriter本质上是PrintStream的面向字符的版本。
构造函数:
PrintWriter(OutputStream outputStream)
PrintWriter(OutputStream outputStream,booleanautoFlushingOn)
PrintWriter(Writer outputStream)
PrintWriter(Writer outputStream,boolean autoFlushingOn)
autoFlushingOn参数控制每次调用println()/printf()或format()方法时,是否自动刷新输出缓冲区,如果为true,就自动刷新,否则不自动刷新,没有指定的构造函数不自动刷新。
PrintWriter(File outputFile)
PrintWriter(File outputFile,String charSet)
PrintWriter(String outputFileName)
PrintWriter(String outputFileName,String charSet)
这几个构造函数允许从File对象或根据文件路径创建PrintWriter对象,对于每种形式,都会自动创建文件,所有之前存在的同名文件都会被销毁。一旦创建PrintWriter对象,就将所有输出定向到指定文件,可以通过charSet传递的名称来指定字符编码。