import java.io.*;
import java.util.*;
public class Read{
         byte b[];
String s;
BufferedInputStream in;
PipedInputStream pi;
PipedOutputStream po;
public Read() throws Exception{
b = new byte[100];
    in = new BufferedInputStream(new FileInputStream("t.txt"));
    int i =in.read(b,0,100);    
    pi = new PipedInputStream();
    po = new PipedOutputStream(pi);
    po.write(b,0,100);
    System.out.println(pi.read());
}    public static void main(String[] args) throws Exception{
Read r = new Read();}}
程序的意思是先把t.txt的内容输入到字节数组b中。再利用管道流po把b的内容写到管道输入流中。再用pi读出流中的内容。
其中t.txt的内容是:  123456789
输出的结果为什么会是49呢? 怎么输出的是一个int类数。难道管道流不能读写文件的内容吗?管道流到底有什么用哦?

解决方案 »

  1.   

    你只是   pi.read() 返回的是一个 int 么?这是一个字符的编码,你需要连续的读出所有的字符。49 = '1' , 你只读了第一个。
      

  2.   

    它的read方法的返回值就是int型的.
    管道流主要应用在线程方面!
    你在read()方法里添一句System.out.println(Arrays.toString(b));你就知道为什么了!
      

  3.   

    从pi.read()返回的数据类型是int,而int是这个数字的Unicode而不会是数字所代表的值。例如1是字符1的unicode ‘49’,2是字符2的unicode50 。 而pi.read()每次都只能读取一个并返回int类型数据,每读一次向后移动一个位置,如果要读完全部你必须用如下的语句:
    for(int i=0;i<9;i++)
    System.out.println(pi.read());