1.Java中流的分类有哪些?
流从流动方向上看:一般分为输入流和输出流
输入流:如System.in是一个InputStream类型输入流
输出流:如System.out 是一个PrintStream类型输出流
从读取类型上分:一般分为字节流和字符流
字节流:如System.in是一个InputStream类型字节流
字符流:如new InputStreamReader(System.in)是一个字符流对象
流从发生的源头:分为节点流和过滤流类
节点流:直接操作目标设备对应的流 。过滤流:继承带有关键字Filter的流
2.字节流InputStream和OutputStream的子类分别有哪些?请举例说明其使用场景。与其对应的字符流分别有哪些
InputStream的子类
FileInputStream 文件流
PipedInputStream 管道输入流,读取管道内容
ObjectInputStream用来恢复被序列化的对象
ByteArrayInputStream包含一个内存缓冲区,字节从中取出。
SequenceInputStream 是多种输入流的逻辑串联,从第一个输入流读取,直到最后一个输入流
FilterInputStream 过滤流,在读写数据的同时还可以对数据进行特殊处理
OutputStream的子类
FileOutputStream 文件流
PipedOutputStream 管道流
ObjectOutputStream将对象序列化后写入指定地方
ByteArrayOutputStream在字节数组和流之间搭建桥梁
SequenceOutputStream 是多种输入流的逻辑串联
FilterInputStream 过滤流,在读写数据的同时还可以对数据进行特殊处理
3.字节流与字符流的转化是怎样的?Java对此提供了哪些支持?
输入字节流转为字符流需要用到inputstreamReader的构造方法
输出字符流转为字节流用到OutputStreamWriter或PrintWriter的构造方法
//InputStreamReader(InputStream in)
//例如:
InputStreamReader ins = new InputStreamReader(System.in);
InputStreamReader ins = new InputStreamReader(new FileInputStream(“test.txt”));
//OutputStreamWriter(OutputStream out)
//PrintWriter(OutputStream out)
//例如:
OutputStreamWriter outs = new OutputStreamWriter(new FileOutputStream(“test.txt”));
4.Java中的过滤流(流的装配)有什么作用?请举例说明常用的过滤流。
过滤流:BufferedInputStream和BufferedOutputStream, 缓存作用,用于装配文件磁盘、网络设备、终端等读写开销大的节点流,提高读写性能。
5.什么是对象的序列化和反序列化?Java对此提供了哪些支持?
序列化,将实现了Seriallizable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象,后者又称反序列化。
支持:使用ObjectInputStream类和ObjectOutputStream类
6.Java的File类表示什么?有什么作用?
File类不仅指系统中的文件,也指目录,因为目录也是特殊的文件。
作用:表示一个文件对象,文件(或目录)路径名字的抽象表示。
7.Java对文件的读写分别提供了哪些支持?
1.File 文件(或目录)路径名字的抽象表示
2.FileDescriptor 代表一个打开文件的文件描述。
3.FileFilter & FilenameFilter 接口,列出满足条件的文件,用于:
File.list(FilenameFilter fnf)
File.listFiles(FileFilter ff)
FileDialog.setFilenameFilter(FilenameFilter fnf)
FileDialog是java.awt包中的类。
4.FileInputStream 以字节流的形式顺序读文件。
5.FileReader 以字符流的形式顺序读文件。
6.FileOutputStream 以字节流的形式顺序写文件。
7.FileWriter 以字符流的形式顺序写文件。
8.RandomAccessFile提供对文件的随机访问支持。