一、处理流
1、处理流可以隐藏底层设备上节点流的差异,并对外提供更加方便的输入/输出方法,让程序员只需关心高级流的操作。
2、使用处理流时的典型思路是,使用处理流来包装节点流,程序通过处理流来执行输入输出功能,让节点流与底层的IO设备、文件交互。
3、实际识别处理流非常简单,只要流的构造器参数不是一个物理节点,而是已经存在的流,那么这种流就一定是处理流;而所有节点流都是直接以物理IO节点作为构造器参数的
使用处理流的优势:
(1)对开发人员来说,使用处理流进行输入/输出操作更简单
(2)使用处理流的执行效率更高
示例代码:

/**
 * 处理流可以隐藏底层设备上节点流的差异,并对外提供更加方便的输入/ 输出方法,让程序员只需关心高级流的操作。
 * 使用处理流时的典型思路是,使用处理流来包装节点流,程序通过处理流来执行输入/输出功能, 让节点流与底层的I/O设备、文件交互。
 * 处理流和节点流的区别,只要流的构造器存在参数不是一个物理节点 ,而是己经存在的流,那么这种流就一定是处理流;而所有节点流都是直接以物理IO节点作为构造器参数的。
 * 
 * @author sxj
 * 
 */
public class PrintStreamDemo {
	public static void main(String[] args) throws IOException {
		
		Writer writer = new FileWriter("E:/z/PrintStreamDemo.txt");
		PrintWriter printWriter = new PrintWriter(writer);
		String str = "处理流可以隐藏底层设备上节点流的差异,并对外提供更加方便的输入/ 输出方法,让程序员只需关心高级流的操作。";
		String str2 = "使用处理流时的典型思路是,使用处理流来包装节点流,程序通过处理流来执行输入/输出功能, 让节点流与底层的I/O设备、文件交互。";
		String str3 = "处理流和节点流的区别,只要流的构造器存在参数不是一个物理节点 ,而是己经存在的流,那么这种流就一定是处理流;而所有节点流都是直接以物理IO节点作为构造器参数的。";
		printWriter.println(str);
		printWriter.println(str2);
		printWriter.println(str3);

		/**
		 * 在使用处理流包装了底层节点流之后,关闭输入/输出流资源时,只要关闭最上层的处理流即可。
		 * 关闭最上层的处理流时,系统会自动关闭被该处理流包装的节点流。
		 */

		printWriter.close();
	}
}

示例代码执行结果:

java 方法流 java处理流_构造器


二、转换流

输入/输出流体系中还提供了两个转换流,这两个转换流用于将字节流转换成字符流,其中InputStreamReader将字节输入流转换成字符输入流,OutputStreamWriter将字节输出流转换成字符输出流

示例代码:

/**
 * 转换流 : InputStreamReader 和 OutputStreamWriter
 * 用于将字节流转换成字符流
 * 
 * @author sxj
 *
 */
public class InputStreamReaderDemo {
	public static void main(String[] args) {
		
		try {
			StringBuilder builder=new StringBuilder();
			
			//读取文本文件
			InputStream in=new FileInputStream("E:/Java课件/HelloWorld.java");
			InputStreamReader inReader=new InputStreamReader(in);
			
			char[] cs=new char[50];
			int count=0;
			while((count=inReader.read(cs, 0, cs.length))!=-1){
				builder.append(cs, 0, count);
			}
			inReader.close();
			
			//输出读取的内容
			System.out.println(builder.toString());
			
			//写文本文件
			OutputStream out=new FileOutputStream("E:/Java课件/HelloWorld.java");
		    OutputStreamWriter writer=new OutputStreamWriter(out);
		    
		    writer.write(builder.toString());
		    writer.flush();
			writer.close();	
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

示例代码执行结果:

java 方法流 java处理流_java 方法流_02


java 方法流 java处理流_构造器_03