Java IO 笔记 --- IO概述和基本概念

1 IO流 概述

IO流,就是 InputOutput
IO流,主要是用来 处理设备之间的 数据传输,Java对于 数据 的操作,都是 通过流来实现 的。Java 用于操作 IO流的对象,都在 IO包 中。
分类:

按照 操作数据 分为:字符流字节流
按照 流向 分为:输入流输出流

字节流都带 Stream,字符流都不带

IO流有四个基类:Reader Writer InputStream OutputStream,这 4个基类都是 抽象类,我们使用的时候,需要结合具体需求,使用其子类来完成相应功能。
其子类 File File的常用方法 缓冲区 转换流 对象流 内存流 打印流 管道流

这里写图片描述

2 字符流与字节流

字符流:

1 字符流简介

字符流中的对象,融合了编码表,也就是系统默认的编码表。我们的系统一般都是 GBK
字符流只用来处理文本数据,字节流用来处理媒体数据
数据最常见的表现方式是 文件,字符流用于操作文件的子类一般是 FileReader FileWriter

2 字符流读写注意事项:

1 写入文件后必须要用 flush() 刷新
2 用完流后记得要 关闭流
3 使用流对象要 抛出 IO异常
4 定义文件路径时,可以用“/”或者“\”
5 在创建一个文件时,如果目录下有同名文件将被覆盖
6 在读取文件时,必须保证该文件已存在,否则出异常

字节流

概述:

1 字节流和字符流的基本操作是相同的,但是要想操作 媒体流 就需要用到 字节流
2 字节流因为操作的是字节,所以可以用来操作媒体文件。(媒体文件也是以字节存储的
3 字节流操作可以不用刷新流操作
4 InputStream特有方法:
int available() ;//返回 文件中的字节个数
注:可以利用此方法来指定读取方式中传入数组的长度,从而省去循环判断。但是如果文件较大,而虚拟机启动分配的默认内存一般为64M。当文件过大时,此数组长度所占内存空间就会溢出。所以,此方法慎用,当文件不大时,可以使用。

字节流与字符流的区别

字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作,而字符流在操作的时候是使用到缓冲区的
字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明 字符流用的是缓冲区,并且可以 使用flush()方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

那开发中究竟用字节流好还是用字符流好呢?

在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用 字节的操作是最多的

如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值