java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

技术java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream java基础知识回顾之javaIO类--管道流PipedOutputStream

Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)基础知识回顾之javaIO类-管道流PipedOutputStream和管道输出流

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(管道输出流),管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上。如图所示:

1.管道输入流应该连接到管道输出流,输入流和输出流可以直接连接

2.使用多线程操作,结合线程进行操作。通常由某个线程从管道输入流中(管道输入流)对象读取。

并由其他线程将其写入到相应的端到输出流中。不能使用单线程对输入流对象向和输出流对象进行操作,因为会造成死锁问题。

3.管道流连接:(1)使用构造方法进行连接管道输出流(管道输出流snk)创建连接到指定管道输入流的管道输出流。

(2)公共void connect(PipeDinputstream snk)抛出IOException,使用连接方法进行连接

下面看代码:

打包。LP。ecjtu。io。皮聘;

导入Java。io。ioexception

导入Java。io。PipeDinputStream

导入Java。io。pipedoutputstream

公共类PipedDemo {

公共静态void main(String[]参数){ 0

pipe dout outstream out=new pipe dout outstream();

pipe dinputstream in=new pipe dinputstream();

尝试{

出去。连接(in);

} catch(IOexception e){ 0

//待办事项自动生成的捕捉块

e。print stack trace();

}//输出管道流连接输入管道流

新线程(新输出线程(输出))。start();

新线程(新输入线程(in)).start();

}

}

类InputThread实现了可运行

私有管道输入流;

public Inputthread(PipeDinputStream in){ 0

这个

}

@覆盖

公共void run(){ 0

//TODO自动生成的方法存根

尝试{

字节[]缓冲=新字节[1024];

int len=in。read(buff);

字符串s=新字符串(buff,0,len);

系统。出去。println

} catch(IOexception e){ 0

//待办事项自动生成的捕捉块

e。print stack trace();

}

}

}

类输出线程实现了可运行

专用管道输出流;

公共输出线程(PipeDoutPuttStream out){ 0

出去

}

@覆盖

公共void run(){ 0

string str="你好,Pipped!";

尝试{

出去。write(str。GetBytes());

} catch(IOexception e){ 0

//待办事项自动生成的捕捉块

e。print stack trace();

}最后{

尝试{

如果(出去!=null){ 0

出去。close();

}

} catch(IOexception e){ 0

//待办事项自动生成的捕捉块

e。print stack trace();

}

}

}

}

java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码:

包裹cn。它投了。io。P6。字节流;

导入Java。io。BytearrainputStream

导入Java。io。字节数组输出流;

导入Java。io。ioexception

公共类ByteArrayStreamDemo {

/**

* @param参数

* @抛出IOException

* 特点

* 1.内存操作流

* 2.不操作底层资源,不调用操作系统的底层资源,操作内存中的数据,内存流不需要关闭

* 3.关闭流后还可以使用

* 本例:内存操作流完成的一个大小写字母转换的程序:

*/

公共静态void main(String[]参数){ 0

字符串字符串="你好,世界!";

bytearrayinputstream bis=new bytearrayinputstream(str。getbytes());//将内容输入到内存中

bytearrayputstream Bos=new bytearrayputstream();//将内存中的数据输出

int ch=0;

bis。跳过(2);//跳过两个字节

系统。出去。println(bis。可用());//返回此输入流读取的(或跳过)剩余的字节数

while((ch=bis.read())!=-1){

Bos . write(character . tolowercase(ch));//将大写和小写字符转换为小写

}

system . out . println(Bos . ToString());

}

}

输出:你好世界!因为跳过两个字节!总共有12个字节,剩下10个字节。

10

洛世界!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154988.html

(0)

相关推荐

  • 怎么正确认识C语言在当今编程领域的地位

    技术怎么正确认识C语言在当今编程领域的地位这篇文章主要讲解了“怎么正确认识C语言在当今编程领域的地位”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么正确认识C语言在当今

    攻略 2021年10月20日
  • java如何简单快速处理 json 中的数据

    技术java如何简单快速处理 json 中的数据java如何简单快速处理 json 中的数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JSONstr.j

    攻略 2021年12月2日
  • 82年巴姓歌手,布仁巴雅尔是歌手还是歌唱家

    技术82年巴姓歌手,布仁巴雅尔是歌手还是歌唱家布仁巴雅尔是歌手82年巴姓歌手。1、布仁巴雅尔(1960年3月6日-2018年9月19日),出生于内蒙古自治区呼伦贝尔市新巴尔虎左旗,中国蒙古族男歌手,毕业于内蒙古艺术学院。

    生活 2021年10月28日
  • 抖音刷粉网站,抖音刷粉丝会被发现吗?

    技术抖音刷粉网站,抖音刷粉丝会被发现吗?时下抖音是当前国内主流,极火爆,极具人气的产品。当你在网上找抖音刷粉丝刷赞大师和米勒抖音刷粉丝软件怎么刷粉丝方法的时候会出现几万条的相关信息.
    抖音刷粉丝大家一定要选择正规的网站平

    测评 2021年11月10日
  • Python制作动态词频条形图的过程是怎样的

    技术Python制作动态词频条形图的过程是怎样的这篇文章给大家介绍Python制作动态词频条形图的过程是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言”数据可视化“这个话题,相信大家并不陌

    攻略 2021年11月11日
  • CSS同级元素浮动怎么实现

    技术CSS同级元素浮动怎么实现本篇内容主要讲解“CSS同级元素浮动怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS同级元素浮动怎么实现”吧!1.同级浮动(1)使块

    攻略 2021年12月10日