一.java中的流分类有哪些?
1.从流动方向上:分为输入流和输出流
2.从读取类型上:分为字节流和字符流
3.从发生源头:分为节点流和过滤流
二.字节流InputStream和OutputStream的子类分别有哪些?与其对应的字符流分别有哪些?
1.InputStream的子类
FileInputStream 文件流,与其对应的字符流为 FileReader
PipedInputStream 管道输入流,读取管道内容。多和PipedOutputStream一起用于多线程通信 ,与其对应的字符流为PipedReader
ObjectInputStream用来恢复被序列化的对象
ByteArrayInputStream包含一个内存缓冲区,字节从中取出。
SequenceInputStream 是多种输入流的逻辑串联,从第一个输入流读取,直到最后一个输入流
FilterInputStream 过滤流,在读写数据的同时还可以对数据进行特殊处理,与其对应的字符流为FilterReader
1.OutputStream的子类
FileOutputStream 文件流,与其对应的字符流为FileWriter
PipedOutputStream 管道流,与其对应的字符流为PipedWriter
ObjectOutputStream将对象序列化后写入指定地方
ByteArrayOutputStream在字节数组和流之间搭建桥梁
SequenceOutputStream 是多种输入流的逻辑串联
FilterInputStream 过滤流,在读写数据的同时还可以对数据进行特殊处理
持?,与其对应的字符流为FilterWriter
四.java中的过滤流(流的装配)有什么作用?常用的过滤流有哪些?
过滤流在读/写数据的同时可以对数据进行处理,并提供同步机制,这样在同一时刻只有一个线程可以访问一个I/O流。
FilterInputStream和FilterOutputStream类是所有过滤输入流和输出流的父类,它们是抽象类,本身不能生成任何实例,在这两上类之下,分别实现了几物特殊的过滤输入流和输出流,利用这些特殊输入流和输出流的实例可以进行流处理。
其常用子类有
BufferedInputStream 和 BufferedOutputStream这两个类实现了带缓冲的过滤流,对于BufferedInputStream类,当系统读取数据时,数据按块读入缓冲区,随后读操作直接访问缓冲区。使用BufferedOutputStream进行输出时,数据首先写入缓冲区,当缓冲区满时,缓冲区中的数据写入连接的输出流,BufferedOutputStream类提供的方法flush()可以强制将缓冲区的内容全部写入输出流。
DataInputStream 和 DataOutputStream这两个类不仅能读写数据流,而且能读写各种各样的Java语言本身固 有的数据类型,如int、float等。
五.什么是对象的序列化和反序列化?Java提供了那些支持?
对象的串行化又称为序列化,是将内存中的动态对象表达成可以传输的串行式,而与之相反的过程则称为反串行化或者反序列化。
Java中提供了Serializable接口。当一个类声明实现了Serializable接口时表明该类加入对象串行化协议,即Serializable接口时对象串行化的标志。
六.Java的File类表示什么?有什么作用?
File类代表文件和目录
通过File类对象可以访问文件的属性并且可以创建空文件和目录
七.Java对文件的读写提供了哪些支持?
使用FileWriter和FileReader,对文件内容按字符读取
使用包装类BuffredReader和BufferedWriter,对文件内容进行整行读取
使用FileInputStream和FileOutputStream,这种方法以字节的形式写入文件,读取文件时先读取字节数组,再将字节数组转换为字符串形式