io流
来源:互联网 发布:手机像素画图软件 编辑:程序博客网 时间:2024/06/05 09:23
------- android培训、java培训、期待与您交流! ----------
在集合中涉及到IO流的是Properties
在IO流中涉及到多线程技术的是管道流
管道流就是将输入流当做输出流的写入目的地
将输出流当做输入流的读取源
管道流:PipedOutputStream, PipedInputStream
可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。
通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。
不建议对这两个对象尝试使用单个线程,因为这样可能会造成该线程死锁。
如果某个线程正从连接的管道输入流中读取数据字节,但该线程不再处于活动状态,则该管道被视为处于 毁坏 状态
PipedOutputStream 的write在写完后要关闭流,不然会抛出 write dead错误。
通过connect(PipedOutputStream src) 将输入和输出连接到一起
---------------
PipedOutputStream 中的public void write(byte[] b,
int off,
int len)
throws IOException
将 len 字节从初始偏移量为 off 的指定 byte 数组写入该管道输出流。在将所有字节写入输出流之前,此方法一直处于阻塞状态。
管道流的输出流并不像其他IO流一样将数据写入到硬盘上的文件,而是将数据写入到了流本身,这个流本身之所以能被写入数据是
因为在输入流中有一个1024大小的循环缓冲区。
PrintStream ps = new PrintStream(pipedOS);
System.setOut(ps);
System.setErr(ps);
将标准输出流设置为PrintStream,将原来要打印到控制台的信息输出到PrintStream流中
再通过PrintStream流将数据原样写入到管道流的输出流中(输入流的循环缓冲区)
------------------------------
PipedInputStream运用的是一个1024字节固定大小的循环缓冲区。写入PipedOutputStream的数据实际上保存到对应的 PipedInputStream的内部缓冲区。
从PipedInputStream执行读操作时,读取的数据实际上来自这个内部缓冲区。如果对应的 PipedInputStream输入缓冲区已满,任何企图写入PipedOutputStream的线程都将被阻塞。
而且这个写操作线程将一直阻塞,直至出现读取PipedInputStream的操作从缓冲区删除数据。
-------------------------------
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/
- 【IO流】IO框架
- IO流呀IO流
- 字符IO&数据流IO&对象流IO
- io流
- io流
- IO流
- IO流
- IO 流
- IO流
- io流
- IO流
- io流
- IO流
- IO流
- IO流
- IO流
- IO流
- IO流
- Qt事件
- 64位Oracle 11g R2的客户端连接时报ORA-01019错误
- form 通过js 调用 form名字 .submit(); 有时失效 ***.submit is not a function 需注意
- rename application package 遇到的exception
- 关于 访问 IIS 元数据库失败 的解决方法
- io流
- Android模拟器学framework和driver之传感器篇(Android HAL)
- perl的点点滴滴
- S3C6410启动模式介绍
- android的include标签
- Sturt标签堆栈浅析
- Hi3515主板UBoot参数备份
- 4 基于IntelVt技术的Linux内核调试器- 调试器设计与实现(2):调试核心
- jQuery插件AjaxFileUpload可以实现ajax文件上传