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. HTTP1.1初识

    Http(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议. Http1.1版中,有一个持续连接(Persistent Connections)机制,其作为Http1.1中建立连接的 ...

  2. Windows Phone 8.1 新特性 - 常用的启动器

    本篇为大家介绍一下 Windows Phone 8.1 中部分常用启动器的实现方式.分别是 呼叫电话.发送短信.发送邮件.添加约会到日历.启动地图.地图路线显示.地图下载 和 地图更新. 1. 呼叫电 ...

  3. hdu 1166 敌兵布阵(树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始 ...

  4. [Python] Pitfalls: About Default Parameter Values in Functions

    Today an interesting bug (pitfall) is found when I was trying debug someone's code. There is a funct ...

  5. .net framework 版本汇总

    Version Release Date 1.0.3705.0 1RTM 2002/2/13 1.0.3705.209 1SP1 2002/3/19 1.0.3705.288 1SP2 2002/8/ ...

  6. Texture2D.GetPixelBilinear(float u, float v)的使用,官方例子注释

    using UnityEngine; using System.Collections; public class TEST : MonoBehaviour { public Texture2D so ...

  7. cmd输出的日志里有中文乱码的解决办法

    在命令行使用adb logcat命令直接输出日志中文内容显示乱码,原因是中文系统中cmd命令行窗口默认的编码是GBK,而LogCat打印的日志是UTF-8编码,所以adb logcat命令输出的中文内 ...

  8. FLEXNET License管理

    之前的程序License管理是我自己手撸的一个非常简单的东东,根据用户机器的MAC地址生成一个字串,程序执行的时候去比较这个字串.当时只是追求一个最简单的实现,像证书过期.功能点证书自然没有.这次新版 ...

  9. [ASE]sprint3 总结 & sprint4计划

    斯普润特4! 啊终于到最后一个阶段了…… 有种苦日子就要熬到头跟小组合作意犹未尽的感觉 那么开始sprint3-sprint4的衔接吐槽总结 在之前的两周也就是sprint3期间正赶上出国申请的dl, ...

  10. Jexus web server V5.4.5 已经发布

    Jexus 是运行于 Linux/FreeBSD 平台的一款以支持 ASP.NET 为主要特色的,同时非常重视安全性和稳定性的高性能 WEB 服务器.最新版 5.4.5 已经发布,官方网站是:www. ...