基础IO之流

流的概念

在Java中所有数据都是使用流读写的。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称和抽象。数据在两设备间的传输称为流。
l流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

流的分类

按照流向分:输入流、输出流
按照处理数据的单位分:字节流(8位的字节);字符流(16位的字节)

Java中IO流的分类:

  • 字节、字符流:InputStream、OutputStream字节流,Writer、Reader字符流
  • 输入、输出:Input输入,Output输出,Writer输出,Reader输入
  • 文件:带File的IO类,作为文件操作的IO流
  • 二进制数组:ByteArray
  • java对象:Object
  • 特殊的:
    PrintWriter表示打印输出到某个设备
    Scanner表示接收某个设备的输入
    StringWriter
    StringReader

输入输出流

输入流

输入就是将数据从各种输入设备(包括文件、键盘等)读取到内存中。
输入流模式

输出流

输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。
输出流模式
在这里插入图片描述
例如:键盘是一个输入设备,显示器是一个输出设备。文件既可以作为输入设备,又可以作为输出设备

字节流与字符流

File类不支持文件内容处理,如果要处理文件内容,必须要通过流的操作模式来完成。
在java.io包中,流分为两种:字节流与字符流

  • 字节流:数据流中最小的数据单元是字节。InputStream、OutputStream
  • 字符流:数据流中最小的数据单元是字符。Java中的字符是Unicode编码,一个字符占用两个字节。Reader、Writer

字节流

FileInputStream和FileOutputStream

方法解释
FileInputStream(File file)通过打开与实际文件的连接一个FileInputStream,该文件是由文件系统中的File对象file命名
FileInputStream(String name)通过打开与实际文件连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名
  • FileInputStream从文件系统中的某个文件中获得输入字节
  • FileInputStream用于读取诸如图像数据之类的原始字节流
方法解释
FileOutputStream(File file)创建文件输出流以写入由指定的File对象表示的文件
FileOutputStream(String name)创建文件输出流以指定的名称写入文件

字节缓冲流

方法解释
BufferedInputStream(InputStream in)创建一个BufferedInputStream并保存其参数,输入流in,供以后使用
BufferedInputStream(InputStream in, int size)创建BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流in,以供以后使用
BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,以将数据写入指定的底层输入流
BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流

字符流

字符流FileReader和FileWriter
FileReader是用于读取字符流

方法解释
FileReader(File file)创建一个新的FileReader,给出File读取
FileReader(String fileName)创建一个新的FileReader,给定要读取的文件的名称

FileWriter是用于写入字符流

方法解释
FileWriter(File file)给一个File对象构造一个FileWriter对象
FileWriter(String fileName)构造一个给定文件名的FileWriter对象

字符缓冲流BufferedReader和BufferedWriter

方法解释
BufferedReader(Reader in)创建使用默认大小的输入缓冲区的缓冲字符输入流
BufferedReader(Reader in, int sz)创建使用指定大小的输入缓冲区的缓冲字符输入流
BufferedWriter(Writer out)创建使用默认大小的输出缓冲区的输出字符流
BufferedWriter(Writer out, int sz)创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区

字符流与字节流的对比

1、字节流操作的基本单元是字节;字符流操作的基本单元为Unicode码元。
2、字节流在操作的时候本身不会用到缓冲区的,是与文件本身直接操作的;而字符流在操作的时候使用到缓冲区的。
3、所有文件的存储都是字节(byte)的存储,在磁盘上保留的是字节。
4、在使用字节流操作中,即使没有关闭资源(close方法),也能输出;而字符流不使用close方法的话,不会输出任何内容。

字符字节转换流

方法解释
InputStreamReader(InputStream in)创建一个使用默认字符集的InputStreamOlder
InputStreamReader(InputStream in, Charset cs创建一个使用给定字符集的InputStreamReader
OutputStreamWriter(OutputStream out)创建一个默认字符编码的OutputStreamWriter
OutputStreamWriter(OutputStream out, Charset cs)创建一个给定字符集的OutputStreamWriter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值