java之IO流总结

第一部分:IO体系

1、IO流:

(1)描述:

用于处理设备之间的数据传输的体系,Java对数据的传输操作都是通过流的方式进行的,用于操作流的对象都在IO包中

(2)划分:

按流向分:输入流、输出流

按操作数据分:字节流和字符流(用编码表将字节处理成字符)

2、IO的四大基类

Reader    字符读取流                     Writer       字符写入流

InputStream      字节读取流           OutputStream   字节写入流

3、常用基本IO类
(1)Reader:

BufferedReader         字符读取缓冲流

InputStreamReader:   字符读取转换流

FileReader         文本文件读取流

(2)Writer:

BufferedWriter          字符写入缓冲流

OutputStreamWriter :字符写入转换流

FileWriter          文本文件写入流

(3)InputStream:

FileInputStream        文件读取流

(4)OutputStream:

FileOutputStream    文件写入流





第二部分:字符流

1、Reader

(1)共性方法:

close()   关闭流资源
read()    读取一个字符
read(char[] cbuf)   将读取的字符存放在指定字符数组中
read(char[] cbuf, int off, int len)    将读取的字符存放在指定字符数组的指定位置中

(2)InputStreamReader

描述:InputStream转换流,将字节流转换成字符流

通常在涉及到字符编码转换时用到转换流

FileReader

是InputStreamReader的子类,是封装了默认编码表的转换流

构造函数必须传入文件源,如果没有该资源,则报异常

(3)BufferReader

描述:字符读取缓冲流,要明确需要缓冲的读取流对象

可以提高读取流的读取效率,并增加了更丰富的操作方法

方法:

readLine()   读一行字符,返回的数据不包含换行符

close()        关闭流资源,这里要关闭的是其对应的读取流的底层资源,其本身并不涉及底层资源调用

练习:模拟读一行数据的方法

LineNumberReader

带行号的字符缓冲区

方法:

getLineNumber    获取行标号

setLineNumber    设置行标号

readLine       读一行

扩展:键盘录入的读取录入信息原理和字符缓冲流读一行的原理一样,可以用转换流使键盘录入可以使用字符缓冲流的读一行方法

2、Writer

(1)共性方法:

close()     关闭此流资源,关闭前将流中的数据刷新到目的地中
flush()      将流的缓冲区中的数据刷到目的地中,刷新后还可以继续写入数据
write(char[] cbuf)     将字符数组中的数据写入到流中
write(char[] cbuf, int off, int len)    将字符数组中指定位置的数据写入到流中
write(int c)         将一个字符写入到流中
write(String str)    将字符串写入到流中
write(String str, int off, int len)    将字符串中指定位置的子串写入到流中


(2)OutputStreamWriter

描述:输出转换流,将字符流转换成字节流

可以指定写入数据的编码表,只有转换流可以使用指定编码表

FileWriter

OutputStreamWriter的子类,其实是相当于封装好了默认的编码表的转换流

构造

构造函数必须定义文件源,如果无法创建,则报异常

如果指定的位置没有该文件,则新建,如果有,则覆盖原有数据

FileWriter(String fileName)    构造函数接收一个要将流中数据写入文件的对应文件名

FileWriter(String fileName,boolean append)    append值为true时,将数据写在已有文件末尾处


(3)BufferedWriter

描述:

构造函数传入一个流对象(为了给流对象提高效率,所以必须要先有流对象)

缓冲区的资源来自于流对象,所以关闭缓冲区就是在关闭流对象的资源

只要用到缓冲区就要记得刷新

方法:

close   关闭流资源

flush    将流中的数据刷新到指定目的地

newLine    写入一个换行符到流中



第三部分:字节流

1、InputStream

共性方法:

close()   关闭流资源

read()     读一个字节

read(byte[] b)    将字节读取到字节数组中

read(byte[] b, int off, int len)     将字节读取到字节数组的指定位置

FileInputStream


2、OutputStream

方法:

close()    关闭资源

flush()      强制刷新

write(byte[] b)     写字节数组

write(byte[] b, int off, int len) 

write(int b)     写一个字节

FileOutputStream

文件输出流

PrintStream

打印流

可用于:打印异常信息、打印系统属性信息

PrintStackTrace(···)

properties对象.ListnewPrintStream(流))

不可以用字符流来操作非文本文件


第四部分:IO的操作思路及IO异常

1、操作IO流的思路

(1)明确源和目的;

1)源:

应用体系:

InputStream

Reader

源设备:

键盘 、硬盘(文件)、内存

2)目的:

应用体系:

OutputStream

Writer

目的设备:

控制台、硬盘(文件)、内存

(2)明确操作的数据类型;

纯文本数据:

应用体系:

Reader

Writer

非纯文本数据:

应用体系:

InputStream

OutputStream

2、IO异常处理

处理流程

1、如果创建流不成功,即没有获取到资源,后面的都不用再执行了,所以一起将创建流到对流的操作部分一起写入到一个try语句中

2、不管操作资源发生什么异常,到最后流的资源一定要回收,所以close方法一定要执行,所以close方法写在finally里面,并且要单独定义一个try语句处理close方法可能发生的异常

3、流有可能创建不成功,所以关闭流之前要判断流对象是否为空,如果为空则不用关

log4j:

是处理异常信息的网络资源包


源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值