七天零基础学java(第五天)--io流

io流

image

image

 

【】盘符网络上的一个文件,但凡是个文件,就可以封装为一个具体的对象

【】可通过File类进行封装

image

【】File只能对文件外部一些属性信息进行操作,但文件内部内容无法操作,需要借助io流才能进入到内部

image【】io流,在文件和程序之间的一个双向管道

image

 

image

【】对于程序而言,按照管的方向,分为输入管输出管。

【】管子口径大小不同,分为一次处理一个字节的字节流细管,和一次能处理一字符的字符流粗管

【】一个流就能解决问题,叫做节点流,类比一根管喝奶;

需要多个流套在一起才能解决问题,叫做处理流,多根管组合起来的伸缩管。

【】io流体系庞大,但是使用上大同小异,会一组流其余的流基本就都会了

【】输入流

image

【】读取功能四步:

1准备文件,File引入----有这个文件就是打包成对象,没有建立一个新文件再打包成对象

2准备管子,FileReader,管子插到文件上,之后读取和关闭都是使用管子里的方法

3逐个字符读取,read()

4流关闭,close()

image

【】按照字符读取,都是获取的ascii码,其中-1代表无内容,

【】读取值只要不是-1就能循环下去

【】输出流

image

【】建立空白文件

【】准备管子,管子连接文件

【】输出----输出不是逐个输出

【】关闭管子

image

image

【】老马书城集合版本无法永久保存,一关闭所有信息立即清空。

所以想用io来做到永久保存,存到盘符中的文件里面

【】对象流是节点流,需要多个管子套在一起使用,两个input一块用,两个output一块用

【】新版本在集合版基础上升级,所以修改之前版本就可以了

【】先修改2书籍上新,输出流

image

【】将书本信息录入book类对象后,把book对象添加进集合对象(建立集合对象,添加元素)

【】将集合对象写出到硬盘文件:先将硬盘文件包装成File对象(本身有就是定位,没有会新建个文件):

File f=new File("e:\\demo.txt");    file连原文件

【】创建文件输出管,

 FileOutputStream fos=new FileOutputStream(f),文件输出流连File

创建对象输出管

ObjectOutputStream oos=new ObjectOutputStream(fos),对象输出流连文件按输出流

对象输出流里面函数直接处理程序中对象。各种管道默认直接连接程序段。

【】关闭流,只要把最外层管子关闭就可以了,最后和程序相连的流关闭就可以了

【】修改1,展示书籍,输入流

image

想要知道上新书籍,这些录入时存入盘符的demo.txt文件里

【】首先文件对象化

【】搭管子,先文件输入流管子(连接文件对象),再搭对象输入流管子(连接文件输入流)

【】读取成对象,之后类型强制转换

image【】文件此时出错,需要在Book类加上序列化接口implements Serializable,然后altenter导包完善

 

【】优化1:如果未执行上新2没有生成demo.txt文件,就直接执行操作1展示书籍,就会因为没有相应文件而报错

【】应该做一个文件存在性判断,if-else

image

【】优化2:执行操作二,每次都是新集合,通过流传到文件覆盖原来内容。

【】可以先读取文件内容,再添加book对象再进集合,再进盘符

 

 

 

【】文件不存在,正常把书对象存入集合对象,集合对象通过输出流写出去到盘符文件

image

【】文件存在,证明有旧书籍信息存在,先读取旧书后再加入新书对象进集合再存成盘符文件

image

image
 
 
 
 
 
 
 
 
posted @ 2025-08-11 10:28  ibddindonon  阅读(6)  评论(0)    收藏  举报