黑马程序员——基础知识——功能流

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Day22

前面讲的都是基本的输入输出流,今天讲各种功能流

22.01 序列流

       1、什么是序列流 继承自InputStream

              相当于讲输入流管子连接起来了,大管套小管,写一次读取就可以了。

              序列流可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个,以此类推。

       2、使用方式

              整个两个:SequenceInputStream(InputStream, InputStream)


22.02 序列流整合多个

       整合多个:SequenceInputStream(Enumeration<? ExtendsInputStream> e)

       构造函数可以传一个枚举进去



22.03 内存输出流(五星)

       1、什么是内存输出流

              该输出流可以向内存中写数据,把内存当做一个缓冲区,写出之后可以一次性获取出所有数据

              应用:聊天的软件可以用

       2、使用方式

              创建对象:new ByteArrayOutputStream()

              写出数据:write(int)  write(byte[])

              获取数据:toByteArray()



22.04 内存输出流之黑马面试题

       定义一个文件输入流,调用read(bte[] b)方法,将a.txt文件中的内容打印出来(byte数组大小限制为5)



22.05 对象操作流ObjectOutputStream

       1、什么是对象操作流

              该流可以将一个对象写出,获取读取一个对象到程序中,也就是执行了序列化和反序列化的操作。

              写出就是序列化,读取就是反序列化

              对象必须实现Serializable接口,才能序列化和反序列化

       2、使用方式

              写出 newObjectOutputStream(OutputStream) writeObject()

 

22.06 对象操作流ObjectInputStream

       读取:newObjectInputStream(InputStream) readObject()



22.07 对象操作流优化

       将对象存储在集合中将集合当做对象写出,读取的时候就读取容器即可,

对容器进行操作



22.08 加上id号

       注意:

              要写出的对象必须实现Serializable接口才能被序列化

              实现了Serializable接口可以添加id号作为标识,看错误的时候更清晰点

不是必须加id号

 

22.09 打印流的概述和特点

       1、什么是打印流PrintStream

              该流可以很方便的将对象的toString结果输出,并且自动加上换行,而且可以使用自动刷出的模式

PrintStream是OutputStream的子类

              System.out就是一个PrintStream打印流  ,其默认向控制台输出信息


2、使用方式PrintWriter

              是Writer的子类

              打印:print(),println()

       自动刷出:PrintWriter(OutputStream out, boolean autoFlush , String encoding)

              打印流只操作数据目的

       

22.10 标准输入输出流概述和输出语句

       1、什么是标准输入输出流

       System.in是InputStream,标准输入流,默认可以从键盘输入读取字节数据

       System.out是OutputStream,标准输出流,默认可以向Console(控制台)中输出字符和字节数据

       2、修改标准输入输出流

              修改输入流:System.setIn(InputStream)

              修改输出流:System.setOut(PrintStream)



22.11 两种方式实现键盘录入

       1、BufferedReader 的readLine方法

       2、Scanner


22.12 随机访问流概述和读写数据

       1、随机访问流概述

              RandomAccessFile概述,雌雄同体,既可以读也可以写

              RandomAccessFile类不属于流,是Object类的子类,也属于IO包下的。但它融合了InputStream和OutputStream的功能

              支持对随机访问文件的读取和写入

              构造方法:

RandomAccessFile(File file,String mode)

RandomAccessFile(String name,String mode)String为文件路径

Mode:r只读   rw读和写

       2、read、write、seek(设置指针)



22.13 数据输入输出流

       1、什么是数据输入输出流

       DataInputStream,DataOutputStream可以按照基本数据类型大小读写数据

       例如按long大小写出一个数字,写出时该数据占8字节,读取的时候也可以按照long类型读取,一次读取8个字节

       2、使用方式

22.14 Properties的概述和作为Map集合的使用

       1、Properties的概述

              Properties不是流是一个双列集合,Properties是一个配置文件,父类是Hashtable。

              Properties类表示了一个持久的属性集

              Properties可保存在流中或从流中加载

              属性列表中每个键及其对应值都是一个字符串

       2、案例演示


22.15 Properties的特殊功能使用

       1、Properties的特殊功能

              public ObjectsetProperty(String key , String value)设置键值对

              public StringgetProperty(String key)根据键获取值

              publicEnumeration<String> string PropertyNames()将键存入枚举,根据枚举再获取键和值

2、案例演示


22.16 Properties的load和store功能

       1、Properties的load和store功能

              如何与IO流关联呢?就是load和store,load参数列表是输入流,store参数列表是输出流(字节字符都可以)

       2、案例演示



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值