1.Java中流的分类有哪些?
流动方向:分为输入流和输出流
输入流:如System.in是一个InputStream类型输入流
输出流:如System.out 是一个PrintStream类型输出流
读取类型:分为字节流和字符流
字节流:如System.in是一个InputStream类型字节流
字符流:如new InputStreamReader(System.in)是一个字符流对象
发生的源头:分为节点流和过滤流类
节点流:直接操作目标设备对应的流 如文件流,标准输入输出流
过滤流:继承带有关键字Filter的流 用于包装操作节点流,方便读写各种类型的数据
2.字节流InputStream和OutputStream的子类分别有哪些?请举例说明其使用场景。与其对应的字符流分别有哪些?
FileInputStream和FileOutputStream在文件和流之间搭建桥梁。
FileInputStream构造方法:
FileInputStream(String name) :以文件路径名字构造一个文件输入流,打开一个与实际文件的连接,用于从该流中读取文件字节流
FileOutputStream构造方法:
FileOutputStream(String name) :以文件路径名字构造一个文件输出流,打开一个与实际文件的连接,用于文件的写字节流操作
3.字节流与字符流的转化是怎样的?Java对此提供了哪些支持?
输入字节流转为字符流需要用到inputstreamReader的构造方法:
InputStreamReader(InputStream in)
输出字符流转为字节流用到OutputStreamWriter或PrintWriter的构造方法:
OutputStreamWriter(OutputStream out)
4.Java中的过滤流(流的装配)有什么作用?请举例说明常用的过滤流。
过滤流: BufferedInputStream和BufferedOutputStream, 缓存作用,用于装配文件磁盘、网络设备、终端等读写开销大的节点流,提高读写性能
过滤流BufferedReader的使用:用于缓存字符流,可以一行一行的读
import java.io.*;
public class inDataSortMaxMinIn {
public static void main(String args[]) {
try{
BufferedReader keyin = new BufferedReader(new
InputStreamReader(System.in));
String c1;
int i=0;
int[] e = new int[10];
while(i<10){
try{
c1 = keyin.readLine();
e[i] = Integer.parseInt(c1);
i++;
}
catch(NumberFormatException ee){
System.out.println(“请输入正确的数字!”);
}
}
}
catch(Exception e){
System.out.println(“系统有错误”);
}}}PrintWriter的使用:可以向该字符流中写入Java基本数据类型,用于包装输出字符流类对象
import java.io.*;
public class PrintWrit {
public static void main(String[] args)throws Exception{
PrintWriter out = new PrintWriter(new BufferedWriter(new
FileWriter(“foo.txt”)));
out.println(“hello”); //写入字符串
out.println(3); //写入整型
out.close(); //关闭流,系统自动将缓冲区内容flush
}
}5.什么是对象的序列化和反序列化?Java对此提供了哪些支持?
Java 序列化就是指将对象转换为字节序列的过程,而bai反序列化则是只将字节序列转换成目标对象的过程。
6.Java的File类表示什么?有什么作用?
在java中baiFile类是可以直接操作文件的类,
它有四个构造函数:
File(String parent,String child)
File(File parent,String child)
File(URI uri)
File(String pathname)
封装了一系列方法,可以对文件进行操作
7.Java对文件的读写分别提供了哪些支持?
1 输入输出抽象基类InputStream/OutputStream ,实bai现文件内容操作的基本功能函数read()、 write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。
2 FileInputStream/FileOutputStream:
用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);
3 PipedInputStream/PipedOutputStream:
用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。操作时需要连结);
4管道的连接:
方法之一是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象
















