File类、IO分类、InputStream、OutputStream、Reader、Writer

File类

  1. 路径分类:绝对路径、相对路径
  2. 绝对路径:从根目录开始的路径,称为绝对路径

  Windows系统中:盘符目录就是根目录,D:、E:

  Linux系统中:/就是根目录,从/开始的路径就是绝对路径

  1. 相对路径:相对于某个路径而言的路径

  相对于不同的路径,同样的相对路径,表达的是不同的路径

  Dos命令行中:相对于当前路径(Dos命令行所在的路径),a/b/c.txt

  Idea中:相对于当前工程的根目录

输入,输出,都是相对应用程序来说的。数据流向程序,叫做输入流。数据从程序流出叫做输出流。

IO分类

分类的方式有两种:按照功能可以分类,按照流向也可以分类

按照功能分类:

  字节流:可以直接操作字节的流对象

  字符流:可以直接操作字符的流对象

按照流向分类:

  输入流:其他设备流到内存的流对象

  输出流:内存流到其他设备的流对象

IO流的体系结构,根据分类,有四种流对象的类型

  字节流:

    字节输入流:InputStream

    字节输出流:OutputStream

   字符流:

    字符输入流:Reader

    字符输出流:Writer

InputStream

InputStream是一个抽象类,不能直接创建对象,只能由子类创建对象,最常用子类 FileInputStream,用于和磁盘上的文件进行交互。

常用方法

read():从当前的字节输入流中,获取一个字节

read(byte[] arr):将arr.length个字节,读取到arr中

read() 方法

一次读到一个字节。输出这个数据到控制台上发现,显示的是数字而不是字母。为什么?因为显示的是字母对应的码值,如果需要转成字符,可以强转成char类型。

当read()的值为 -1 时,表示读到文件的末尾。

read(byte[] arr)

使用read方法的时候,流需要读一次就处理一次,可以将读到的数据装入到字节数组中,一次性的操作数组,可以提高效率。

read方法返回的是往数组中存了多少字节。

 close()

使用完流后,一定要关闭。  close()

OutputStream

字节输出流的顶层抽象父类,最常用子类FileOutputStream

仔细查看a.txt文本文件发现上述程序每运行一次,老的内容就会被覆盖掉。那么如何不覆盖已有信息,能够往a.txt里追加信息呢。查看API文档,发现FileOutputStream类中的构造方法中有一个构造可以实现追加的功能FileOutputStream(File file, boolean append)  第二个参数,append - 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处。

Reader

Reader是抽象类,常用实现类FileReader

常用方法

int read() 读取一个字符,-1表示读到文件的末尾。

int read(char[] cbuf)  将字符读入数组,返回值表示读到了多少个字符。

close()关闭流

Writer

  Writer是抽象类,常用实现类FileWriter

常见的方法

write(ch): 将一个字符写入到流中。

write(char[]): 将一个字符数组写入到流中。

write(String): 将一个字符串写入到流中。

flush():刷新流,将流中的数据刷新到目的地中,流还存在。

close():关闭资源:在关闭前会先调用flush(),刷新流中的数据去目的地,然后流关闭。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曲靖花式通幽处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值