A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

忽然有个疑惑,为什么这里的int len=in.read(buf);没有循环呢?是因为是字节数组而不是字符数组所以不用循环吗?

package io;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

class Read implements Runnable{
        private PipedInputStream in;
        Read (PipedInputStream i){
                this.in=i;
        }
        @Override
        public void run() {
                try {
                        byte[]buf=new byte[1024];
                        System.out.println("读取前。。没有数据 阻塞了");
                        int len=in.read(buf);
                        System.out.println("读到数据,阻塞结束");
                        String s=new String(buf,0,len);
                        System.out.println(s);
                        in.close();
                } catch (Exception e) {
                        // TODO: handle exception
                        throw new RuntimeException("管道输入流失败        ");
                }
               
        }
        public static void main(String[]args) throws IOException{
                PipedInputStream in=new PipedInputStream();
                PipedOutputStream out=new PipedOutputStream();
                in.connect(out);
               
                Read r=new Read(in);
                Write w=new Write(out);
                new Thread(r).start();
                new Thread(w).start();
               
        }
}

class Write implements Runnable{
        private PipedOutputStream out;
        Write(PipedOutputStream out){
                this.out=out;
        }
        @Override
        public void run() {
                // TODO Auto-generated method stub
                try {
                        System.out.println("开始写入数据,等待6秒后");
                        Thread.sleep(6000);
                        out.write("piped lai le".getBytes());
                        out.close();
                } catch (Exception e) {
                        throw new RuntimeException("管道输出流失败        ");
                }
        }
       
}


       


1 个回复

正序浏览
哦,我知道为什么了。。这里毕老师直接给了1M的字节数组长度,够长,所以就不用循环了~~~哈哈哈。。。我怎么把这点忘记了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马