IO流

1. 概述

流是一组有顺序的,有起点,有重点的字节集合

流的本质 就是数据的传输,根据不同的数据传输特性,抽象出各种类,方便我们直接操作数据
设备之间的数据传递称为流
流中的操作对象是指内存中,当前操作的程序而言
输入 : 指往内存中导入数据
输出 : 指从内存中写出数据

2. 分类

按处理数据类型的不同,分为字节流和字符流
按数据流向的不同,分为输入流和输出流。(入和出是相对于内存来讲的)
按功能不同,分为节点流和处理流
节点流:直接操作数据源

3. 四大抽象类

InputStream 字节输入
OutputStream 字节输出
Reader 字符输入
Writer 字符输出
3.1 InputStream

3.1 OutputStream
3.2 Reader

3.3 Writer

4. 文件流

4.1 总概

原始文件流 : 用于打开链接,操作数据
FileInputStream 字节输入
FileOutputStream 字节输出
FileReader 字符输入
FileWriter 字符输出

4.2 FileInputStream

java.io.FileInputStream; 按照自己的方式在原始文件中读取数据
定位到某个文件 有两种方式, 1 绝对路径 2 相对路径
相对路径 : 相对当前文件, ./ 当前目录 , …/ 上级目录, …/…/…/ 上上上级目录 , / 下级
绝对路径 : 以系统跟目录为准,如何找到这个文件

读取一个字节,返回下一个字节的值,因为开始光标在顶端,如果到达文件末尾(后面没有了) 就返回-1

Read( ) 返回下一个字节的值,如果到达文件末尾 返回 -1

Read(byte[] bytes)
read 方法重载
可以无参,可以传入一个byte数组,
read(byte[] b) : 使用字节数组来存储读取的数据,并一次返回(要么数组装满,要么到达文件末尾),可以提高读取效率
返回值 是本次读取到的字节个数,如果到达文件末尾 返回-1

4.3 FileOutputStream

将程序中内容 写出到硬盘中
输入流 找不到指定文件 会报错 , 但是输出流不会报错,会自动创建该文件,但是不会创建文件夹(目录)

构造方法 :
FileOutputStream(String) : 把内容输出到指定文件中,并会覆盖原文件中内容
FileOutputStream(String,boolean) : 如果第二个参数是true,把内容输出到指定文件中,并在原文件中追加数据

成员方法 :
write(int i) : 写出整型
write(byte[] b) : 写出字节数组,想要输出字符串可以利用字符串中的getBytes()方法,把字符串转换为字节数组
flush() : 刷缓存,强制把缓冲区写出,避免造成数据遗漏

4.4 FileReader

FileRead : 一次读一个字符,也就是2字节,而 unicode编码也是2字节
字符串输入流 一般用于读取纯文本文件,像压缩包,图片等还是使用字节流

read一样有方法重载
read() : 读取一个字符,返回下一个的字符数据,到达文件末尾返回-1
read(char[] c) : 读取一个字符数组,返回读取到的字符数,到达文件末尾返回-1

4.5 FileWriter

字符输出流,新增字符串写出

5. 缓冲流

5.1 概述

缓冲流 是包装流,创建对象的时候,传入的参数不再是文件地址,而是文件流对象
作用 : 把每次读入的数据存入到一个缓冲区,然后一次写入;把输出的数据存入一个缓冲区,然后一次写出
如果缓存流关闭,那么传入的对应的文件流对象也会被关闭
BufferedInputStream,
BufferedOutputStream,
BufferedReader,
BufferedWriter;
针对字符操作,提供了两个新方法
readLine() : 读一行,返回值就是读到的这一行的数据,到达文件末尾,返回null
newLine() : 换行,就等于\n
为了提高效率而存在的,减少物理读取次数

6. 转换流

6.1 概述

转换流 是字节流和字符流之间转换 的桥梁
通过转换 流把字节流转换为字符流
还可以再转换过程中 指定字符编码
转换流是指将字节流向字符流的转换,主要有InputStreamReader和OutputStreamWriter
InputStreamReader主要是将字节流输入流转换成字符输入流
OutputStreamWriter主要是将字节流输出流转换成字符输出流
6.2 InputStreamReader

7. 打印流

打印流是输出最方便的类
包含字节打印流PrintStream,字符打印流PrintWriter
PrintStream是OutputStream的子类,把一个输出流的实例传递到打印流之后,可以更加方便地输出内容,相当于把输出流重新包装一下
PrintStream类的print()方法被重载很多次print(int i)、print(boolean b)、print(char c)
Java的标准输入/输出分别通过System.in和System.out来代表,在默认的情况下分别代表键盘和显示器,当程序通过System.in来获得输入时,实际上是通过键盘获得输入。当程序通过System.out执行输出时,程序总是输出到屏幕。
在System类中提供了三个重定向标准输入/输出的方法
static void setErr(PrintStream err) 重定向“标准”错误输出流
static void setIn(InputStream in) 重定向“标准”输入流
static void setOut(PrintStream out)重定向“标准”输出流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值