java按照io流向基类_JavaIO

1. Java文件对象

Java中File类提供了四种构造方式。

20181025175412822515.png

这四种构造方式实现了Java可以在默认路径创建文件/文件夹、在给定路径下创建文件。

对于一个文件对象,可以访问它的名字、父路径、绝对路径、相对路径。

File也提供了创建一个文件、文件夹、临时文件的方法。

File提供了很多对文件的操作和查看方法,具体查阅API。

文件的读写要使用到流。

2.IO分类

JavaIO流的体系

20181025175413295172.png

2.1按照流向

a)       输入流

只能向其中读取数据不能写入数据。(磁盘->内存、网络->本地)(基类:InputSream和Reader)

b)       输出流

只能向其中写入数据不能读取数据。(内存->磁盘、服务器->网络)(基类:OutputSream和Writer)

20181025175413670172.png

2.2按照操作数据单位

字节流和字符流的操作几乎一致,区别在于操作单位。

a)       字节流

字节流的操作单位是8位的字节。主要由InputStream和OutputStream作为基类。

20181025175414070562.png

b)       字符流

字符流的操作单位是16位的字符。主要由Reader和Writer作为基类。

20181025175414495367.png

字符流和字节流的使用时机

处理音频文件、图片、歌曲,优先使用字节流;

处理是关系到中文(文本)的,使用字符流更佳;

可以使用字符流处理的也可以用字节流处理,能使用字节流处理的不一定能使用字符流处理。

区别:

1、字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的

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

3、Reader类的read()方法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在 0到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1

inputStream的read()虽然也返回int,但由于此类是面向字节流的,一个字节占8个位,所以返回 0到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。因此对于不能用0-255来表示的值就得用字符流来读取!比如说汉字.

4、字节流与字符流主要的区别是他们的的处理方式

字节流:处理字节和字节数组或二进制对象;

字符流:处理字符、字符数组或字符串。

2.3按照角色

a)       节点流(介质流)

可以从/向一个特定的IO设备(磁盘、网络)读/写数据的流。

20181025175414755132.png

程序直接连接到数据源,和实际的输入输出节点连接。

b)       操作流(装饰流)

用于对已存在的流进行连接或封装,通过封装后的流来实现读写。

20181025175415129156.png

区分处理流和节点流

如若一个流的构造函数的参数是一个数据源说明是节点流,

如果一个流的构造函数参数是一个字节流说明是操作流程。

处理流的优点

对于开发人员来讲,处理流的操作更加简单。

处理流的执行效率更高。

3.流的概念模型

a)       输入流

20181025175415485601.png

b)       输出流

20181025175415777593.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值