java字符串流与管道流
字符串流
以一个字符串为数据源,来构造一个字符流
作用:
在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字符串流与管道流相关推荐
- JAVA IO流(内存流、管道流、打印流)
1.内存操作流 2.管道流 3.字节.字符转换流 4.字符的编码问题 5.打印流 6.System类对IO的支持 7.对象序列化 内存操作流 FileInputStream 和FileOutputSt ...
- 5.2 IO流(File类,Propertis配置文件,其他类(打印流,序列流,操作对象的流(序列化接口),随机访问文件的流,管道流,操作基本数据的流,操作数组的流,操作字符串的流),编码表)
1.File类 IO流的流对象只能操作设备上的数据.File类:1.用来将文件或者文件夹(也称目录)封装成对象. 2.方便对文件和文件夹的属性信息进行操作.(操作文件夹,文件的属性(创建时间,修改时间 ...
- Java IO类库之管道流PipeInputStream与PipeOutputStream
2019独角兽企业重金招聘Python工程师标准>>> 一.java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedO ...
- java 管道设计_使用管道流实现Java 8阶段构建器
Step builder多阶段步骤构造器模式是一种对象创建软件设计模式.与传统构建器模式进行比较时,步骤构建器模式提供了一些简洁的好处.Step Builder模式的主要优势之一是为客户提供有关如何使 ...
- Java IO5:管道流、对象流
前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...
- Java IO7:管道流、对象流
前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...
- java 管道流_Java IO7:管道流、对象流
前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流 FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是 ...
- Java IO 之 管道流 原理分析
概述 管道流是用来在多个线程之间进行信息传递的Java流. 管道流分为字节流管道流和字符管道流. 字节管道流:PipedOutputStream 和 PipedInputStream. 字符管道流:P ...
- JAVA的IO编程:管道流
掌握线程通讯流(管道流)的使用 管道流的主要作用是可以进行两个线程间的通讯,分为管道输入流(PipeOutputStream)和管道输出流(PipeInputStream). 如果要想进行管道输出,则 ...
最新文章
- 洛谷—— P1605 迷宫
- mockito 外部接口_【IDEA开发SpringBoot2.0】使用Mockito进行常规接口测试#05
- FileLocatorPro正则表达式批量搜索文件中的字符串
- 云原生乘风者联合征文活动——说出你和「阿里云云原生」的故事
- ajax实现一个前台的进度条,前台ajax实现上传文件并且有进度条
- jdbc url写法(集群)
- 如何启用“锁定内存页”选项 (Windows)
- C#windows服务中的Timer控件的使用
- 前嗅ForeSpider教程:配置关键词
- java序列化和反序列话总结
- ArcGIS 概述
- 阅读圣经丨变量引起的上下文
- js调用android手写输入法,jQuery手写输入法代码
- matlab 叉乘变点乘,向量点乘和叉乘
- linux配置文件读写权限,Linux 服务器如何设置文件和文件夹的读写权限
- 程序linux培训,马哥-51CTO-Linux培训-0910-程序包管理
- 淘宝关键字搜索商品-v1
- PS2键盘编程详细资料
- Remote Procedure Calls
- android手机图片和价格,安卓拍照手机强势推荐及报价【图文】