首页 > 代码库 > IO-05内存操作流06管道流
IO-05内存操作流06管道流
JAVA中可以将输出的位置设置在内存上,此时使用ByteArrayInputStream,ByteArrayOutputStream来完成输入,输出功能。
利用这两个类实现大小字母的转换:
package lianxijihe; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; public class lianxi049 { public static void main(String[] args){ String str = "AAAAAAAAA"; InputStream in = new ByteArrayInputStream(str.getBytes()); OutputStream out = new ByteArrayOutputStream(); int temp; try { while((temp=in.read())!=-1){ char c = (char)temp; out.write(Character.toLowerCase(c)); } String newStr = out.toString(); in.close(); out.close(); System.out.println(newStr); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }线程通讯流(管道流)的使用
管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流PipedOutputStream,管道输入流PipedInputStream,如果想要进行管道流输出,则必须把输入流连在输入流上,如下图:
下面使用管道流进行输入输出操作:
package lianxijihe; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; public class lianxi050 { /** * @param args */ public static void main(String[] args) { Send s = new Send(); Receive r = new Receive(); try { s.getPos().connect(r.getPis()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } new Thread(s).start(); new Thread(r).start(); } } class Send implements Runnable{ private PipedOutputStream pos = null; public Send(){ this.pos = new PipedOutputStream(); } @Override public void run() { // TODO Auto-generated method stub String str ="HelloWorld!!"; try { this.pos.write(str.getBytes()); pos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public PipedOutputStream getPos(){ return this.pos; } } class Receive implements Runnable{ private PipedInputStream pis = null; public Receive(){ this.pis = new PipedInputStream(); } @Override public void run() { byte[] b =new byte[1024]; int len = 0; try { len = pis.read(b); pis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(new String(b,0,len)); } public PipedInputStream getPis(){ return this.pis; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。