字符串流
以一个字符串为数据源,来构造一个字符流
作用:
在WEB开发中,我们经常要从服务器上获取数据,数据的返回格式通过是一个字符串(xml,json),我们需要把这个字符串构造成一个字符流,然后再用第三方的数据解析器来解析数据。
StringReader
其源为一个字符串的字符流
StringWriter
一个字符流,可以用其回收在字符串缓冲区中的输出类构造字符串。关闭StringWriter无效。此类中的方法在关闭该流后仍可被调用,而不会产生任何IOException。

代码示例:
计算英文语句单词个数

package com.booy;import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;public class StringReaderDemo {public static void main(String[] args) {stringReader();      }private static void stringReader() {String info = "good good study,day day up!";StringReader sr = new StringReader(info);//流标记器StreamTokenizer st = new StreamTokenizer(sr);int count = 0;//流标记类型不等于最后 开始执行while(st.ttype!= StreamTokenizer.TT_EOF) {try {if(st.nextToken()==StreamTokenizer.TT_WORD) {count++;}                                } catch (IOException e) {e.printStackTrace();}}     sr.close();System.out.println("单词的个数是:"+count+"个");}
}

管道流
管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数组字节。通常,数据由某个线程从PipedInputStream对象读取,并由其他线程将其写入到相应的PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。管道输入流包含一个缓冲区,可以在缓冲区限定的范围内将读操作和写操作分离开。如果向连接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏。

代码示例:

package com.booy;import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;//管道流
public class PipedStreamDemo {public static void main(String[] args) {PipedInputStream pin = new PipedInputStream();PipedOutputStream pout = new PipedOutputStream();     try {pin.connect(pout);//输入流与输出流连接} catch (IOException e) {e.printStackTrace();}ReadThread rt =new ReadThread(pin);WriteThread wt = new WriteThread(pout);    new Thread(rt).start();new Thread(wt).start();  }
}class ReadThread implements Runnable{private PipedInputStream pin; //输入管道public ReadThread(PipedInputStream pin) {this.pin = pin;}public void run() {byte[] bytes = new byte[1024];try {int len = pin.read(bytes);//read阻塞String s = new String(bytes,0,len);System.out.println("管道爬出一个"+s);pin.close();} catch (IOException e) {e.printStackTrace();}}
}
class WriteThread implements Runnable{private PipedOutputStream pout;   //输出管道public WriteThread(PipedOutputStream pout) {this.pout = pout;}public void run() {try {pout.write("午夜凶铃".getBytes());pout.close();} catch (IOException e) {e.printStackTrace();}}
}

java字符串流与管道流相关推荐

  1. JAVA IO流(内存流、管道流、打印流)

    1.内存操作流 2.管道流 3.字节.字符转换流 4.字符的编码问题 5.打印流 6.System类对IO的支持 7.对象序列化 内存操作流 FileInputStream 和FileOutputSt ...

  2. 5.2 IO流(File类,Propertis配置文件,其他类(打印流,序列流,操作对象的流(序列化接口),随机访问文件的流,管道流,操作基本数据的流,操作数组的流,操作字符串的流),编码表)

    1.File类 IO流的流对象只能操作设备上的数据.File类:1.用来将文件或者文件夹(也称目录)封装成对象. 2.方便对文件和文件夹的属性信息进行操作.(操作文件夹,文件的属性(创建时间,修改时间 ...

  3. Java IO类库之管道流PipeInputStream与PipeOutputStream

    2019独角兽企业重金招聘Python工程师标准>>> 一.java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedO ...

  4. java 管道设计_使用管道流实现Java 8阶段构建器

    Step builder多阶段步骤构造器模式是一种对象创建软件设计模式.与传统构建器模式进行比较时,步骤构建器模式提供了一些简洁的好处.Step Builder模式的主要优势之一是为客户提供有关如何使 ...

  5. Java IO5:管道流、对象流

    前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...

  6. Java IO7:管道流、对象流

    前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...

  7. java 管道流_Java IO7:管道流、对象流

    前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流 FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是 ...

  8. Java IO 之 管道流 原理分析

    概述 管道流是用来在多个线程之间进行信息传递的Java流. 管道流分为字节流管道流和字符管道流. 字节管道流:PipedOutputStream 和 PipedInputStream. 字符管道流:P ...

  9. JAVA的IO编程:管道流

    掌握线程通讯流(管道流)的使用 管道流的主要作用是可以进行两个线程间的通讯,分为管道输入流(PipeOutputStream)和管道输出流(PipeInputStream). 如果要想进行管道输出,则 ...

最新文章

  1. 洛谷—— P1605 迷宫
  2. mockito 外部接口_【IDEA开发SpringBoot2.0】使用Mockito进行常规接口测试#05
  3. FileLocatorPro正则表达式批量搜索文件中的字符串
  4. 云原生乘风者联合征文活动——说出你和「阿里云云原生」的故事
  5. ajax实现一个前台的进度条,前台ajax实现上传文件并且有进度条
  6. jdbc url写法(集群)
  7. 如何启用“锁定内存页”选项 (Windows)
  8. C#windows服务中的Timer控件的使用
  9. 前嗅ForeSpider教程:配置关键词
  10. java序列化和反序列话总结
  11. ArcGIS 概述
  12. 阅读圣经丨变量引起的上下文
  13. js调用android手写输入法,jQuery手写输入法代码
  14. matlab 叉乘变点乘,向量点乘和叉乘
  15. linux配置文件读写权限,Linux 服务器如何设置文件和文件夹的读写权限
  16. 程序linux培训,马哥-51CTO-Linux培训-0910-程序包管理
  17. 淘宝关键字搜索商品-v1
  18. PS2键盘编程详细资料
  19. Remote Procedure Calls
  20. android手机图片和价格,安卓拍照手机强势推荐及报价【图文】

热门文章

  1. 移动端网页开发(一)
  2. isAssignableFrom方法的功能简介说明
  3. 在vue页面监听中如何修改子元素的样式
  4. VUE 通过ref 控制滚动条到底部顶部
  5. SublimeLinter
  6. 火车头采集之采集内容获取
  7. 耦合(六种)与 内聚(七种)—《软件工程与计算》笔记
  8. 做流程图软件有哪些?来看看今天的分享
  9. 无人驾驶公司大全(原无人驾驶龙虎榜)
  10. ICPR-2018-OCR笔记