七天零基础学java(第五天)--io流
| io流 |
|
【】盘符网络上的一个文件,但凡是个文件,就可以封装为一个具体的对象 【】可通过File类进行封装
【】File只能对文件外部一些属性信息进行操作,但文件内部内容无法操作,需要借助io流才能进入到内部
【】对于程序而言,按照管的方向,分为输入管输出管。 【】管子口径大小不同,分为一次处理一个字节的字节流细管,和一次能处理一字符的字符流粗管 【】一个流就能解决问题,叫做节点流,类比一根管喝奶; 需要多个流套在一起才能解决问题,叫做处理流,多根管组合起来的伸缩管。 【】io流体系庞大,但是使用上大同小异,会一组流其余的流基本就都会了 |
|
【】输入流
【】读取功能四步: 1准备文件,File引入----有这个文件就是打包成对象,没有建立一个新文件再打包成对象 2准备管子,FileReader,管子插到文件上,之后读取和关闭都是使用管子里的方法 3逐个字符读取,read() 4流关闭,close()
【】按照字符读取,都是获取的ascii码,其中-1代表无内容, 【】读取值只要不是-1就能循环下去 |
|
【】输出流
【】建立空白文件 【】准备管子,管子连接文件 【】输出----输出不是逐个输出 【】关闭管子 |
|
【】老马书城集合版本无法永久保存,一关闭所有信息立即清空。 所以想用io来做到永久保存,存到盘符中的文件里面 【】对象流是节点流,需要多个管子套在一起使用,两个input一块用,两个output一块用 |
|
【】新版本在集合版基础上升级,所以修改之前版本就可以了 【】先修改2书籍上新,输出流
【】将书本信息录入book类对象后,把book对象添加进集合对象(建立集合对象,添加元素) 【】将集合对象写出到硬盘文件:先将硬盘文件包装成File对象(本身有就是定位,没有会新建个文件): File f=new File("e:\\demo.txt"); file连原文件 【】创建文件输出管, FileOutputStream fos=new FileOutputStream(f),文件输出流连File 创建对象输出管 ObjectOutputStream oos=new ObjectOutputStream(fos),对象输出流连文件按输出流 对象输出流里面函数直接处理程序中对象。各种管道默认直接连接程序段。 【】关闭流,只要把最外层管子关闭就可以了,最后和程序相连的流关闭就可以了 |
|
【】修改1,展示书籍,输入流
想要知道上新书籍,这些录入时存入盘符的demo.txt文件里 【】首先文件对象化 【】搭管子,先文件输入流管子(连接文件对象),再搭对象输入流管子(连接文件输入流) 【】读取成对象,之后类型强制转换 |
|
|
|
【】优化1:如果未执行上新2没有生成demo.txt文件,就直接执行操作1展示书籍,就会因为没有相应文件而报错 【】应该做一个文件存在性判断,if-else
|
|
【】优化2:执行操作二,每次都是新集合,通过流传到文件覆盖原来内容。 【】可以先读取文件内容,再添加book对象再进集合,再进盘符
|
|
【】文件不存在,正常把书对象存入集合对象,集合对象通过输出流写出去到盘符文件
|
|
【】文件存在,证明有旧书籍信息存在,先读取旧书后再加入新书对象进集合再存成盘符文件
|
![]() |




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








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



浙公网安备 33010602011771号