Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串

原理::syso  向ByteArrayOutputStream这个流理想write字节。。然后可以使用toByteArray()得到字节,转化为字符串即可使用啦。。

(一)Stream的分类:

1 Node Stream :基本流,可以从名称中看出他是从哪个地方输入输出的。

1.1 用于文件输入输出流: FileInputStream, FileOutputStream

1.2 用于内存数组的输入输出流:ByteArrayInputStream, ByteArrayOutputStream

1.3 用于字符串的输入输出流:StringArrayInputStream, StringArrayOutputStream

1.4 用于管道的输入输出流:PipedInputStream, PipeOutStream (用于线程间的交互)

二、基于字节的I/O操作(InputStream和OutputStream)

我们先来看看类图:

总共就是两个流阿:字节,字符
 
字节流可用于任何类型的对象,
而字符流只能处理字符或者字符串,Unicode字符;
也就是说 字节流可以读写所有的文件,
而字符流只能读写文本文件。不能读像音频电影之类的
但是能用字符流的时候就不要用字节流,因为字符流的读写效率更高一些。

本回答由网友推荐

评论

4 3

dngoryaner 

采纳率:31% 来自:芝麻团 擅长: 生活 电脑/网络 医疗健康 娱乐休闲 社会民生

其他回答

1.因为java要和各种其他的譬如电脑文档等交换信息,就有了输入输出流。
2.从最简单的输入输出流懂起,以后遇到什么解决什么。
3.两大类,字节流和字符流
字节流 :BufferedInputStream,BufferedOutputStream,FileInputStream ,FileOutputStream
字符流:BufferedReader,BufferedWriter,FileReader,FileWriter
4.在读写二进制数据时就会使用字节流。在设计用于处理字符输入输出时用的是Unicode,所以要用字符流,在某些情况下,字符流比字节流更高效。字节流和字符流的功能大部分是并行的。

StringBufferInputStream in=newStringBufferInputStream(content); 但是这个类已经过时了 并且好像不支持中文

public static void main(String[] args) {

PrintStream stdOut=System.out;//保存标准输出流

ByteArrayOutputStream bout=new ByteArrayOutputStream();

PrintStream ps = new PrintStream(bout);

System.setOut(ps);

System.out.println("--wanning..for debug out stacktrace");

byte[] buf=bout.toByteArray();

String s=new String(buf);

//restore std out

System.setOut(stdOut);

System.out.println("aa"+s);

}

StreamUtil sx = new StreamUtil();

sx.RedirectToStrOut();

System.out.println("--wanning..for debug out stacktrace");

String s=sx.getStr();

//restore std out

sx.restoreStdOut();

参考

ByteArrayOutputStream用法 - Mayola - 博客园.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

Atiti 重定向标准输出到字符串转接口adapter stream流体系 以及 重定向到字符串的更多相关文章

  1. 函数式接口与Stream流

    lambda表达式是jdk8的特性.lambda表达式的准则是:可推断,可省略. 常规代码写一个多线程 public class Main { public static void main(Stri ...

  2. 黑马函数式接口学习 Stream流 函数式接口 Lambda表达式 方法引用

  3. 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)

    小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优)  //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...

  4. python接口自动化(十八)--重定向(Location)(详解)

    简介 在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url.URL主要是针对虚拟空间而言,因为不是自己独立管理的服务器,所以无法正常进行常规的操作.但是自己又不希望通过主域 ...

  5. Linux 标准输入输出、错误输出、重定向标准输出

    再来看看 >& 操作符: 重定向操作符 描述 > 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄. < 从文件而不是从键盘或句柄读入命令输入. >& ...

  6. 服务接口API限流 Rate Limit 续

    一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...

  7. JS:字符串转成json数据,和json转成字符串方法 iframe获取父级传过来的数据

    字符串转成json数据,和json转成字符串方法 //转为JSON adinfo=JSON.parse(adinfo) //转为字符串 adinfo=JSON.stringify(adinfo) 大概 ...

  8. 常用函数式接口与Stream API简单讲解

    常用函数式接口与Stream API简单讲解 Stream简直不要太好使啊!!! 常用函数式接口 Supplier<T>,主要方法:T get(),这是一个生产者,可以提供一个T对象. C ...

  9. 8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理

    我是风筝,公众号「古时的风筝」.一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

随机推荐

  1. java线程池初步理解

    多线程基础准备 进程:程序的执行过程,持有资源和线程 线程:是系统中最小的执行单元,同一个进程可以有多个线程,线程共享进程资源 线程交互(同步synchronized):包括互斥和协作,互斥通过对象锁 ...

  2. 广义Euler常数

    对于区间(a,b)内f''(x)>0 那么在该区间内函数的一阶导数对应切线在该区间内只与f(x)在切点相交 1. f''(x)>0那么可知 f'(x)在该区间内是单调增的 以下图为例,过( ...

  3. [fortify] preg_replace命令注入

    慎用preg_replace危险的/e修饰符(一句话后门常用) 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-19我要评论 要确保 replacement 构成一个合法的 PHP 代 ...

  4. Spring 学习笔记 4. 尚硅谷_佟刚_Spring_属性配置细节

    1,字面值 •字面值:可用字符串表示的值,可以通过 <value> 元素标签或 value 属性进行注入. •基本数据类型及其封装类.String 等类型都可以采取字面值注入的方式 •若字 ...

  5. 「2014-4-13」Think twice before starting the adventure

    杂文一篇. 1. 取名字真心是一件特别困难的事情.这位独立开发者花了将近两天的时间,给他的私人项目取了个名字:这篇博客<为何我不鸟你的开源项目>里显然还忽视了一个原因,就是名字取得太烂以至 ...

  6. HTML URL 编码

    转自:http://www.w3school.com.cn/tags/html_ref_urlencode.htmlURL 编码 - 从 %00 到 %8f ASCII Value URL-encod ...

  7. sql 注入的防范(一)

    为了保证程序的健壮性,我们必须对用户输入的数据做有效性验证,防止用户恶意提交数据. 关于防止 sql 注入 我主要从三个方面入手: 1.确认为正整数的,强制转化为int,$id  =$_GET('id ...

  8. MFC程序中使用调试宏ASSERT()、ASSERT_VALID()、VERIFY()和TRACE()的区别

    其实这篇文章说的很明白了:http://dev.gameres.com/Program/Other/DebugMacro.htm 结论如下: 1.ASSERT()测试它的参数,若参数为0,则中断执行并 ...

  9. Bootstrap 导航栏和登陆框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. getIdentifier()获取资源Id

    工作需要使用getIdentifier()方法可以方便的获各应用包下的指定资源ID.主要有两种方法:(1)方式一Resources resources = context.getResources() ...