DataInputStream和DataOutputStream
过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。
构造函数
DataOutputStream(OutputStream out)
Constructs a new DataOutputStream on the OutputStream out.
示例:

class StreamTest {
public static void main(String[] args) throws Exception{
//对文件的写入和对文件的读取
FileOutputStream fos = new FileOutputStream("1.txt");
//因为BufferedOutputStream构造函数要求是OutputStream对象,而FileOutputStream是OutputStream派生类
BufferedOutputStream bos = new BufferedOutputStream(fos);
//提供了读写Java中的基本数据类型的功能。
DataOutputStream dos = new DataOutputStream(bos);
//利用String对象的getBytes()获得字符数组
dos.writeByte(23);
dos.writeInt(88);
dos.writeBoolean(true);
dos.writeFloat(123f);
dos.writeChar('x');
dos.flush();
//bos.close();

FileInputStream fis = new FileInputStream("1.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
System.out.println(dis.readByte());
System.out.println(dis.readInt());
System.out.println(dis.readBoolean());
System.out.println(dis.readFloat());
System.out.println(dis.readChar());
bis.close();
}
}

结果:

23
88
true
123.0
x

PipedInputStream和PipedOutputStream
管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。

class pipedTest {
public static void main(String[] args){
PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream();
try{
//谁connect谁都行
pos.connect(pis);
Product p = new Product(pos);
Consumer c = new Consumer(pis);
p.start();
c.start();
}catch(Exception e){
e.printStackTrace();
}
}
}
//往管道中写入数据
class Product extends Thread{
private PipedOutputStream pos;
Product(PipedOutputStream pos){
this.pos = pos;
}
public void run(){
try{
pos.write("hello pipedTest".getBytes());
pos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
//从管道中读取到数据
class Consumer extends Thread{
private PipedInputStream pis;
Consumer(PipedInputStream pis){
this.pis = pis;
}
public void run(){
try{
byte[] b = new byte[100];
int len = pis.read(b);
System.out.println(new String(b,0,len));
pis.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

结果:
hello pipedTest

更多相关文章

  1. 【java】线程安全的整型类AtomicInteger
  2. Java多线程编程
  3. 线程“main”中的异常java.lang.RuntimeException:无法编译的源代
  4. Java ThreadPoolExecutor 线程池调度器
  5. Java多线程wait和notify协作,按序打印abc
  6. Java多线程系列八——volatile和ThreadLocal
  7. java线程池深入二
  8. Java Executor多线程框架
  9. java线程--volatile实现可见性

随机推荐

  1. PHP之Trait功能与用法实例分析
  2. 基于ob系列函数实现PHP网站页面静态化
  3. centos系统如何为php安装memcached扩展
  4. PHP页面静态化之纯静态与伪静态用法详解
  5. 带你解决PHP界面显示中文乱码的问题
  6. PHP中return用法解读
  7. 两小时学会用php做网站购物车
  8. PHP之扩展Memcached命令用法实例总结
  9. 带你深入了解php与C语言的区别
  10. PHP之array_unique实现二维数组去重