BufferedReader bufIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));
首先获取socket输入流对象,Java io体系的设计采用了装饰模式,装饰模式的定义:动态的给一个对象添加一些额外的职责,此处socket.getInputStream获取的是字节输入流对象,而要其具备字符流的功能,所以就必须用到转换流为其添加字符流的职责,所以就把其传给InputStreamReader,为了提高效率需用到缓冲区,必须再次对字符流进行装饰,使其具备缓冲的功能, 所以把InputStreamReader再次传给BufferedReader..从而把一个本身只操作字节的对象装饰成了使其具有缓冲,可以操作字符对象,这是我对这句话的说法. |