zipfile 无法关闭流_百战程序员013天(Io流相关知识)

IO流相关知识

1. 迭代器_遍历List_Set

(1) 迭代器的由来是什么?

迭代器是为容器而生,它本质上就是一种遍历的算法。因为容器的实现千差万别,很多时候不可能知道如何去遍历一个集合对象的元素。Java为我们提供了使用迭代的接口,Java的所有集合类丢失进行迭代的。

(2) 使用迭代器遍历集合的原理是什么?

创建一个指针对象,指向当前数据结构的起始位置。(遍历器的本质就是一个指针对象)

第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员

第二次调用指针对象的next方法,指针就指向数据结构的第二个成员

不断调用指针对象的next方法,直到它指向数据结构的结束位置

2. 迭代器_遍历Map

(1) ListIterator接口比Iterator扩展的哪些方法?

add()方法

Set方法

Remove()方法

Previous()方法

(2) 并发修改异常是如何产生的?

并发修改异常

A:出现的现象

迭代器遍历集合,集合修改集合元素

B:原因

迭代器是依赖于集合的,而集合的改变迭代器并不知道。

3. 容器体系框架总结

(1) 画出集合体系框架图?

fb1c27a38fcb1157a5e8c85240623c59.png

(2) 集合和数组的异同点?

一、数组声明了它容纳的元素的类型,而集合不声明。

二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。

三、数组不论是效率还是类型检查都是最好的。

1.数组是大小固定的,一旦创建无法扩容;集合大小不固定,

2.数组的存放的类型只能是一种,集合存放的类型可以不是一种(不加泛型时添加的类型是Object);

3.数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查(不懂),都是最快的.ArrayList就是基于数组创建的容器类.

4. IO流的基本概念

(1) 简述IO流的原理?

2f9752c92bbe597762c563d84d73193e.png

(2) Java中关于IO流的定义 ?

流:数据传输的通道。流的分类:  按传输的类型:字符流和字节流  按流向:输入流和输出流。  字节流:inputstream outputstream  字符流:reader writer  缓冲流:buffered+流  打印流:printStream printWriter  转换流:inputstreamReaderoutputstreamWriter  区别:至于outputstream在执行write时不需要刷新缓冲,其他的输出流都需要执行一个刷新缓冲区的操作。  byte[]  char[]  datainputstream和dataoutputstream可以写java的基本数据类型。  如果要写一个对象的所以的属性值,如果属性值很多实用data数据流很麻烦,而且有些属性(引用类型)就无法处理

5. 流的细分和体系_四大抽象类

(1) IO流可以分为哪几类?

按流向分(站在程序角度考虑)

输入流(input)

输出流(output)

按类型分:

字节流(InputStream/OutputStream)

任何文件都可以通过字节流进行传输。

字符流(Reader/Writer)

非纯文本文件,不能用字符流,会导致文件格式破坏,不能正常执行。

节点流(低级流:直接跟输入输出源对接) FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter.

处理流(高级流:建立在低级流的基础上)

转换流:InputStreamReader/OutputStreamWriter,字节流转字符流/字符流转字节流

缓冲流:BufferedInputStream/BufferedOutputStream BufferedReader/BufferedReader可对节点流经行包装,使读写更快

(2) 流的四大抽象类分别是什么?

1) InputStream 和 OutputStream

Java 语言中最基本的两个字节输入输出类。

其他所有字节输入输出流类都继承自这两个基类。

这两个类都是抽象类,不能创建它们的实例,只能使用它们

的子类.

2) Reader 和 Writer

Java 语言中最基本的两个字符输入输出类。

其他所有字符输入输出流类都继承自这两个基类。

这两个类都是抽象类,不能创建它们的实例,只能使用它们

的子类.

6. 文件字节流

(1) FileInputStream的常用方法有哪些?

Read()方法,读一个字节。

Read(byte[])方法,将字符读到一个字节数组

Available()方法,文件中可用的对象

(2) FileOutputStream的常用方法有哪些?

Write(int)方法,写

Write(byte[])方法,将一个字节数组写到指定数据源

Close()方法,

7. 使用字节流实现文件复制

(1) 简述使用字节流实现文件复制的原理?

8eaf2309e5f2e0d57f063dbb5305e0c0.png

(2) 简述使用字节流实现文件复制的步骤?

1. 搭建程序和数据源之间的桥梁,利用FileOutputStream类中的write方法,将字节写到指定数据源,然后关闭资源

2. 搭建桥梁数据源与程序之间的联系,利用FileInputStrream类中read方法,将字节文件读到程序中。

分享/讲解/扩展思考

扩展作业:HashMap,HashSet的所有遍历方式都敲一遍,统计一下HashMap和HashSet有多少种遍历方式(百度查询)

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

第28次(IO流)

学习主题: IO流

学习目标:

1 掌握不同类型流的使用

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

8. 文件字符流

(1) Reader常用的方法有哪些?

Read()读取单个字符。

Read(char[] buf)将字符读到一个数组中

(2) Writer常用的方法有哪些?

Flush()冲流

Write(char[] buf)写一个字符数组

Write(int c)写一个字符

Write(String str)写一个字符串

9. 缓冲字节流_缓冲字符流

(1) 缓冲字节流的特点是什么?

提高程序对文件读取效率

(2) 简述使用缓冲字节流进行文件复制时提高效率的原理是什么?

Bufferedinputstream,将数据源读取到缓冲区中,创建一个8192的byte类型的数组

Bufferedoutputstream,同理,当中转到读取数据源时,直接从缓冲区中读和写

10. 转换流

(1) InputStreamReader的作用是什么?

将字节数据类型转换成字符类型

(2) OutputStreamWriter的作用是什么?

将字符类型转换成字节类型

11. 打印流

(1) 简述PrintStream的特点?

是fileoutputstream的子类,不抛出异常,将基本数据类型初始化后,转换成字符串保存在数据源中。对象数据类型,调用tostring方法转换成字符串

(2) 简述PrintWriter与PrintStream的区别?

一个输出字节流,一个是输出字符流。

PrintStream:需要刷新缓冲区

12. 数据流

(1) 数据流的作用是什么?

将基本数据 类型和String类型原封不动的保存在数据源中取出来也是本身的数据类型

(2) 你学过的流中哪些是处理流?

缓冲流,数据流。转换流

���{�s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值