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