流的概念
在Java中,所有的数据都是使用流来编写的,流是一组有顺序,有起点,有终点的字节集合。流的本质是数据传输。
- 按照流向分:输入流,输出流
- 按照处理数据的单位分:字节流,字符流
Java io类图:
字节流
FileInputStream类
FileInputStream是文件输入流,用于从文件中读出数据。
- FileInputStream(File file):通过打开与实际文件的连接创建一个FileInputStream,该文件由文件系统中的 File 对象 file 命名。
- FileInputStream(String name):通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name 命名。
文件输出流是用于将数据写入到输出流 File 或一个 FileDescriptor 。 文件是否可用或可能被创建取决于底层平台。
特别是某些平台允许一次只能打开一个文件来写入一个 FileOutputStream (或其他文件写入对象)。 在这种情况下,如果所涉及的文件已经打开,则此类中的构造函数将失败。
FileOutputStream类
FileOutputStream是文件输出流,用于将数据写出到文件。
-
FileOutputStream(File file):创建文件输出流以写入由指定的 File 对象表示的文件。
-
FileOutputStream(String name): 创建文件输出流以指定名称写入文件。
创建字节输出流对象都做了三件事情:
- 调用系统功能去创建文件
- 创建outputStream对象
- 把outputStream对象指向这个文件
字节缓冲流
缓冲流的作用:
先将要读写的数据缓冲起来,然后然后一起进行读写操作,有利于提高效率。
- BufferedInputStream(InputStream in):创建一个 BufferedInputStream
并保存其参数,输入流 in ,供以后使用。 - BufferedInputStream(InputStream in, int size) :创建 BufferedInputStream
具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用。 - BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,以将数据写入指定的底层输出
- BufferedOutputStream(OutputStream out, int
size):创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流
字符流
- FileReader(File file): 创建一个新的 FileReader ,给出 File 读取。
- FileReader(String fileName) :创建一个新的 FileReader ,给定要读取的文件的名称。
若是从文件中读取内容,可以直接使用FileReader子类
- FileWriter(File file): 给一个File对象构造一个FileWriter对象。
- FileWriter(String fileName) :构造一个给定文件名的FileWriter对象。
如果是向文件中写入内容,可以直接使用FileWriter子类
字符缓冲流和字节缓冲流类似
字符流和字节流的对比
- 字节流的操作基本单元是字节;字符流的操作基本单元是Unicode码元
- 字节流在操作时本身不会用到缓冲区,与文件直接操作;字符流在操作时会主动用到缓冲区。
- 字节流操作中,即使没有关闭(close方法),也能输出;字符流如果不使用clos方法则无输出。