`
初出茅庐555
  • 浏览: 1822 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java IO 管道流实例

    博客分类:
  • java
阅读更多
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipedStream {
/*
* 目的:测试java管道流
* 设计思路: 两个内部类;继承Thread通过run()发送,接受信息
* 描述:本示例不仅阐述了java管道流,同时使用了java设计模式  Singleton(单例)
*/
//程序入口
public static void main(String[] args) {
//输出\输入管道流类对象;通过类方法单例获取
PipedOutputStream out=Sender.getOut();
PipedInputStream  in=Receiver.getIn();

try{
//输入\输出管道流链接方法 connect()
in.connect(out);
}catch(IOException ioe){
ioe.printStackTrace();
}
//启动线程,用start()
new Sender().start();
new Receiver().start();
}
//通过管道流链接发送消息;使用单例必须声明静态内部类
static class Sender extends Thread{
private static PipedOutputStream out=null;
//单例返回管道对象
public static synchronized PipedOutputStream getOut(){
if(out==null){
out=new PipedOutputStream();
}
return out;
}
//发送消息
public void run() {
String mess="Hello Receiver;I'm Sender !\n";
try{
//注意:转成字节数组发送
out.write(mess.getBytes());
out.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
}

}
//通过管道流链接接受消息;使用单例必须声明静态内部类
static class Receiver extends Thread{

private static PipedInputStream in=null;
//单例返回管道对象
public static synchronized PipedInputStream getIn(){
if(in==null){
in=new PipedInputStream();
}
return in;
}
//接受消息
public void run() {
  //定义字节数组
  byte[] byt=new byte[1024];
  try{
  //读取消息
  int len=in.read(byt);
  //生成新字符串
  String mess=new String(byt, 0, len);
  System.out.println("The Sender say:\n"+mess);
  }catch(Exception e){
  e.printStackTrace();
  }
}
}

}
分享到:
评论

相关推荐

    javaIO案例

    javaIO经典案例,inputStream、outputStream、fileInputStream、fileOutputStream、管道流等经典案例

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    Java开发详解.zip

    031206_【第12章:JAVA IO】_管道流笔记.pdf 031207_【第12章:JAVA IO】_打印流笔记.pdf 031208_【第12章:JAVA IO】_System类对IO的支持笔记.pdf 031209_【第12章:JAVA IO】_BufferedReader笔记.pdf 031210_〖第...

    JDK_API_1_6

    Serializable 类通过实现 java.io.Serializable 接口以启用其序列化功能。 类摘要 BufferedInputStream BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。 ...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6...

    Java思维导图xmind文件+导出图片

    Java客户端实现Kafka生产者与消费者实例 kafka的副本机制及选举原理剖析 基于kafka实现应用日志实时上报统计分析 RabbitMQ 初步认识RabbitMQ及高可用集群部署 详解RabbitMQ消息分发机制及主题消息分发 ...

    Java NIO与IO的差别和比较

    本文将通过一些实例来简介NIO库提供的一些新特性:非堵塞I/O,字符转换,缓冲以及通道。  一. 介绍NIO  NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。  1. ...

    j2se项目源码及介绍_last指令

    在这个项目中,我们只要了解了wtmpx的结构,然后通过Java的IO与NIO技术,就可以实现与last同样的功能。并轻松实现电信数据采集系统。 二、 实现要求 a) 与last的实现效果一模一样。效果如下: b) 显示登录名,设备...

    apache mina socket实例

    mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...

    bsmcommons:使 Java 生活更美好但在 Guava 或 Apache Commons 中不可用的东西

    bsmcommons 使 Java 生活更美好但...包装:io字节管道从源到目标的流。字符集UTF-8打印字符串写入器当需要 PrintWriter 时使用字符串。 作家从任何类型的作家创建 PrintWriter 并尽可能保留实例。 包装:拉链 拉链压缩

    socket编程集萃

    因为底层的网络是继续数据的,除非远程调用,处理问题的核心在执行上,否则数据的交互还是依赖于IO操作的,所以你也必须导入java.io这个包.java的IO操作也不复杂,它提供了针对于字节流和Unicode的读者和写者,然后...

Global site tag (gtag.js) - Google Analytics