IO流篇
一.Java中有几种类型的流?
- 字节流和字符流
- 字节流继承inputstream和outputstream,字符流继承自inputstreamReader和outputstreamWriter.
二.分为两大类:
(一):
1.字节输入流:fileinputstream; 构造函数是(file)
2.字节输出流:fileoutputstream;
为了简便有了Bufferedinputstream; 构造函数的参数(InputStream in)---->(new FileInputstream(file))
Bufferedoutputstream;
(二):
1.字符输入流:
Reader; 构造函数(InputStream in)
(他们是抽象类,一般用他们的子类,便捷类:FileReader--->字符转换输入流,构造方法是(InputStream in))
writer;
为了更快的操作有了BufferedReader ;
构造方法:public BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
public BufferedReader(Reader in, int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流。
三.什么是比特(bit),什么是字节(byte),什么是字符(char)?
- bit是最小的二进制单位,是计算机操作部分,只有0和1
- Byte是计算机操作数据的最小单位,由8位bit组成,(-128~127)
- Char是用户可读写的最小单位,由16个bit组成(0~65535)
- 8个字节是给计算机看的,16个字节是给用户看到的,一个字符等于两个字节。
四.什么是节点流,什么是处理流?
- 节点流:直接与数据源相连,用于输入和输出
- 处理流:在节点流的基础上,加以处理,进行功能上的扩展
- 处理流的构造器必须传入节点流的子类
五.如果我要对字节流在应硬盘中大量的读取,用什么流?
1.Bufferedinputstream 使用缓冲流读取大量数据能减少对硬盘的损伤
六.怎样将字节流转换成字符流输出?
使用 转换处理流OutputStreamWriter 可以将字符流转为字节流
New OutputStreamWriter(new FileOutputStream(File file))
七.什么叫对象序列化?什么叫反序列化?
- 对象序列化是将文件以二进制的方式保存到硬盘上
- 反序列化是将二进制文件转换成对象读取
八.outputStream里面的write()是什么意思,write(byte b[], int off, int len)这个方法里面的三个参数分别是什么意思?
write将指定字节传入数据源
Byte b[ ]是byte数组
b[off]是传入的第一个字符
b[off+len-1]是传入的最后的一个字符
len是实际长度
九. 用什么把对象动态的写入磁盘中,写入要实现什么接口?
ObjectInputStream,需要实现Serializable接口