PipedInputStream类有四个字段分别为:  
protected  byte[] buffer 放置传入数据的循环缓冲区。 
protected  int in 循环缓冲区中的位置索引,当从连接的传送输出流中接收到下一个数据字节时,会将其存储到该缓冲区。 
protected  int out 循环缓冲区中的位置索引,此传送输入流将从该缓冲区读取下一个数据字节。 
protected static int PIPE_SIZE 管道的循环输入缓冲区的大小。
我想使用这几个字段,但在类里点不出来,所以希望那位兄弟指点下,是不是跟他的protected有关呢,还是怎么回事呢

解决方案 »

  1.   

    protected是子类可见,你实例化的时候是找不到的。
    找下public的,那才是可以用的(使用此类的时候,而不是继承它)。其实XXInputStream的使用都差不多的。
      

  2.   

    你要用stream中的数据,用对应stream的reader和writer方法,或对应的reader和writer类进行操作就行了,并不一定要用其内部数据。
    下面给个从《java programming language 4th》中关于piped Stream的例子,在书的20.5小节,希望有帮助。class TextGenerator extends Thread {
        private Writer out;    public TextGenerator(Writer out) {
            this.out = out;
        }    public void run() {
            try {
                try {
                    for (char c = 'a'; c <= 'z'; c++)
                        out.write(c);
                } finally {
                    out.close();
                }
            } catch (IOException e) {
                getUncaughtExceptionHandler().
                    uncaughtException(this, e);
            }
        }
    }class Pipe {
        public static void main(String[] args)
            throws IOException
        {
            PipedWriter out = new PipedWriter();
            PipedReader in = new PipedReader(out);
            TextGenerator data = new TextGenerator(out);
            data.start();
            int ch;
            while ((ch = in.read()) != -1)
                System.out.print((char) ch);
            System.out.println();
        }
    }