6.16Java笔记

一、流(Stream)

1.按方向分类

流按方向可分为输入流和输出流,对于内存(参照物)来说,输入流是输入计算机内存是二进制数据,输出流是从计算机内存输出的二进制数据。比如,键盘键入的数据就属于输入流,而内存数据持久化到磁盘中就属于输出流。

2.按大小(处理数据的单位)分类

流按大小可分为字节流和字符流,计算机中存储信息的基本单位是字节(Byte)。字符流只是通过不同的字符编码方式,对字节流的包装,即字符流的实现还是得依靠字节流。所以,信息传输归根结底是靠字节流实现的。

2.1字符流

字符流是包装后的字节流

2.1.1字符流的输出用PrintWriter类:

filename代表文件地址,out.println表示在该文件中输入图中文字,out.flush或out.close表示结束这个过程,类似于用完马桶后的冲马桶。结果如下:

  

在该文件中生成了文字。

在上一节的输出流中,我们学习了打印C/D盘中的所有文件:如下图

而要把C盘的文件全部打印到文件中时,用PrintWriter类实现:

但是Java不允许在属性抛去异常,alt+enter后是这样的:

这是静态代码块,因为属性写一大堆是不合适的(就像写作文的时候开头都是简单明了的),所以应该这么写。

下边scan方法中也改成:

运行后在文件地址打印出C盘所有文件:

2.1.2字符流的输入(Reader):

对Reader类:

它是一个抽象类,只能调用它的子类:

我们用FileReader类读取我们刚刚打印的C盘文件名:

打印结果是:

容易看出,这个程序一次只打印一个字符,要想打出全部的文件名,需要套循环,我们用while完成这件事,因为文件的末尾是-1,所以这样写:

打印结果:

但是这种程序有个缺点,它是一个一个读的,这里Java设计出了更好的类BufferedReader:

读取速度肉眼可见的提升了。

输入流的关系图:

3.对象流

存储对象的信息(例如excel表格中的数据)

对象流包括序列化(将Java对象转化成(也可视为拆成)二进制流)和反序列化(还原)

3.1存对象

做一个Student类用对象流输出和读取:

Student类要加上implements Serializable代表可序列化(可拆),如图:

对象流的输出的读取:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值