• 处理流小结


    本文是基于Linux环境运行,读者阅读前需要具备一定Linux知识

    使用处理流来包装节点流,程序通过处理流来执行输入/输出功能,只要流的构造器参数不是一个物理节点,而是一个已存在的流,那该流则是处理流,所有节点流都时直接以物理IO节点作为构造参数的

    代码1-1使用PrintStream处理流来包装InputStream,被包装成处理流的节点流在使用时更方便

    代码1-1

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    
    public class PrintStreamTest {
    
    	public static void main(String[] args) {
    		if (args == null || args.length == 0) {
    			throw new RuntimeException("请输入路径");
    		}
    		PrintStream ps = null;
    		FileOutputStream fos = null;
    		String[] books = new String[] { "Java编程思想", "编译原理", "算法" };
    		try {
    			fos = new FileOutputStream(args[0]);
    			ps = new PrintStream(fos);
    			for (String book : books) {
    				ps.println(book);
    			}
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			if (ps != null) {
    				ps.close();
    			}
    		}
    
    	}
    
    }
    

    代码1-1运行结果:

    root@lejian:/home/software/.io# java PrintStreamTest books 
    root@lejian:/home/software/.io# cat books 
    Java编程思想
    编译原理
    算法
    

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

    输入/输出体系里还提供2个转换流,这两个转换流用于实现将字节流转换成字符流,其中InputStreamReader将字节输入流转换成字符输入流,OutputStreamWriter将字节输出流转换成字符输出流。Java只提供了字节流转换成字符流,并未提供字符流转换成字节流,原因是字符流在使用上比字节流更方便

    Java使用System.in代表标准输入,即键盘输入,但这个标准输入流是InputStream类的实例,使用不太方便,所以可以使用InputStreamReader将其转化成字符输入流,普通的Reader读取输入内容时依然不太方便,可以将普通的Reader再次包装成BufferedReader,利用BufferedReader的readLine()方法一行一行读取内容

    代码1-2

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class BufferedReaderTest {
    
    	public static void main(String[] args) {
    		BufferedReader br = null;
    		InputStreamReader read = null;
    		try {
    			read = new InputStreamReader(System.in);
    			br = new BufferedReader(read);
    			String buffer = null;
    			while ((buffer = br.readLine()) != null) {
    				if ("exit".equals(buffer)) {
    					System.out.println("程序退出");
    					System.exit(1);
    				}
    				System.out.println("输入内容为:" + buffer);
    			}
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			try {
    				if (br != null) {
    					br.close();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    		}
    	}
    
    }
    

    代码1-2运行结果:

    root@lejian:/home/software/.io# java BufferedReaderTest 
    hello
    输入内容为:hello
    world
    输入内容为:world
    exit
    程序退出
    
  • 相关阅读:
    机械大楼电梯控制项目软件 -- github团队组建
    C# webBrowser 开新窗口保持Session(转)
    Asterisk manager API(AMI)文档(中文版)
    记录两个不错的软件
    extjs4 各种怪异问题
    几款打印控件
    jquery.UI.tabs
    FineUI 基于 ExtJS 的专业 ASP.NET 控件库
    Ext之ExtGrid增删改查询回顾总结
    showModalDialog 刷新问题,在页面中跳转问题
  • 原文地址:https://www.cnblogs.com/baoliyan/p/6222288.html
Copyright © 2020-2023  润新知