博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理流小结
阅读量:5248 次
发布时间:2019-06-14

本文共 2283 字,大约阅读时间需要 7 分钟。

本文是基于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输入内容为:helloworld输入内容为:worldexit程序退出

 

转载于:https://www.cnblogs.com/baoliyan/p/6222288.html

你可能感兴趣的文章
C# 多线程的代价~内存都被吃了!
查看>>
不规则的组合方向键或功能键
查看>>
MVC4中压缩和合并js文件和样式文件
查看>>
上传多媒体文件到微信公众平台
查看>>
NetScaler VPX在Azure上的部署(二)
查看>>
关于自动执行,Quarz配置太麻烦,试了试FluentScheduler
查看>>
行为类模式(三):解释器(Interpreter)
查看>>
巡风源码阅读与分析---nascan.py
查看>>
[CODEVS 3037] 线段覆盖 5
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
scala操作HBase2.0
查看>>
python 多继承
查看>>
Linux重定向: > 和 &> 区别
查看>>
R-FCN:安装训练自己的数据
查看>>
【微信公共平台开发】二维码的获取
查看>>
(转载)Java NIO:NIO概述(一)
查看>>
使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
查看>>
【HANA系列】对话SAP全球CEO孟鼎铭:未来最大的发展机遇属于中国中小企业
查看>>
【ABAP系列】SAP ABAP 给初学者-解读function函数的export和import等参数
查看>>
Learn ZYNQ (9)
查看>>