千锋逆战班学习第31天
千锋逆战班学习第31天
努力或许没有收获,但不努力一定没收获,加油。
今天我学了Java课程的I/O框架。
中国加油!!!武汉加油!!!千锋加油!!!我自己加油!!!
总结-I/O框架
- 流:
- 概念:内存与存储设备之间传输数据的通道,数据借助流传输。
- 流的分类:
- 按方向分【重点】
- 输入流:将<存储设备>中的内容读入到<内存>中。
- 输出流:将<内存>中的内容写入到<存储设备>中。
- 按单位:
- 字节流:以字节为单位,可以读写所有数据。
- 字符流:以字符为单位,只能读写文本数据。
- 按功能:
- 节点流:具有实际传输数据的读写功能。
- 过滤流:在节点流基础之上增强功能。
- 字节流:
- 字节流的父亲(抽象类):
- InputStream:字节输入流
- public int read( ) {}//返回字节的ASCII码
- public int read( byte[] b ) {}//返回有效数据个数
- public int read( byte[] b , int off, int len ) {}
- OutputStream:字节输出流
- public void write( int n ) { }
- public void write( byte[] b ){ }
- public void write ( byte[] b, int off , int len ){ }
- InputStream:字节输入流
- 字节节点流:
- FileOutputStream:
- public void write(byte[] b)//一次写多个字节,将b数组中所有字节,写入输出流。
- FileInputStream:
+public void read(byte[] b)//从流中读取多个字节,将读到的内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1。
- FileOutputStream:
- 字节过滤流:
- 缓冲流:BufferedOutputStream/BufferedInputStream
- 有参构造需要一个字节输出节点流,要先创建字节输出节点流。
- 提高IO效率,减少访问磁盘的次数。
- 数据存储在缓冲区中,flush是将缓冲区的内容写入文件中,也可以直接close
- 对象流:
- 使用流传输对象的过程称为序列化、反序列化。
- 增强了缓冲区功能。
- 增强了读写8种基本数据类型和字符串功能。
- 增强了读写对象的能力:
- readObject()从流中读取一个对象。
- writeObject(Object obj)向流中写入一个对象。
- 缓冲流:BufferedOutputStream/BufferedInputStream
- 对象序列化:
- 对象序列化的细节:
- 必须实现Serializable接口。
- 必须保证其所有属性均可序列化。引用数据类型的数组,其数组类型必须支持序列化(实现Serializable接口)。
- 不能使用static静态类型
- transient修饰为临时属性,不参与序列化。
- 读到文件尾部的标志:java.io.EOFExoeption。(异常,建议try{ while(true){}}catch{})
- 对象序列化的细节:
Question_13_3
3.(流的分类)对于FileInputStream 来说,从方向上来分,它是 ——流,从数据单位上分,它是 ———流, 从功能上分,它是———流。
答:输入;字节;节点;
Question_13_4
4.(字节流)FileInputStream 有三个重载的 read 方法,其中:
I. 无参的read 方法返回值为 类型,表示。
II.int read(byte[] bs)方法返回值表示 _____,参数表示__存储数据的数组 。
III.int read(byte[] bs, int offset, int len) 方法返回值表示 有效的数据个数 ,参数分别表示 存储数据的数组,起始位置,读取长度 、 。
- int;字节的ASCII码,如果已到末尾,返回-1
- 读入缓冲区有效的数据个数 ,如果因为已经到达文件末尾而没有更多的数据,则返回 -1;存储数据的缓冲区
- 读入缓冲区有效的数据个数 ,如果因为已经到达文件末尾而没有更多的数据,则返回 -1;存储数据的缓冲区、起始下标、读取长度
Question_13_5
5.(字节流)下面关于 FileInputStream 类型说法正确的是:
A.创建FileInputStream 对象是为了读取硬盘上的文件
B.创建FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常
C.利用FileInputStream 对象可以创建文件
D.FileInputStream 对象读取文件时,只能读取文本文件
答:AB
Question_13_6
6.(字节流)填空:
I.创建FileOutputStream 对象时,如果对应的文件在硬盘上不存在,则会 ;如果对应的文件在硬盘上已经存在,则;
II.如果使用 FileOutputStream(String path, boolean append)构造方法创建 FileOutputStream 对象,并给定第二个参数为 true,则效果为 _______。 创 建 FileOutputStream 时 ___(会|不会)产生异常。
- 创建文件 ;直接打开
- 从文件尾写入;会
Question_13_7
7.代码改错
class TestFileInputStream{
public static void main(String args[]){
FileInput