import java.io.*;public class pipedIo
{
public static void main(String [] args) throws Exception
{
try
{
//构造读写的管道流对象
PipedInputStream pis=new PipedInputStream();
PipedOutputStream pos=new PipedOutputStream();
//实现关联
pos.connect(pis);
//构造两个线程,并启动
new Sender(pos,"d:\\HelloWorld\\test1.txt").start();
new Receiver(pis,"d:\\HelloWorld\\test2.txt").start();
// new Sender().start();
// new Receiver().start();
}catch(Exception e)
{
System.out.println("Pipe Error"+e);
}
//线程发送
class Sender extends Thread
{
PipedOutputStream pos;
File file;
//构造方法
Sender(PipedOutputStream pos,String fileName)
{
this.pos=pos;
file=new File(fileName);
}
//线程运行方法
public void run()
{
try
{
//读取文件内容
FileInputStream fs=new FileInputStream(file);
int data;
while((data=fs.read())!=-1)
{
//写入管道始端
pos.write(data);
}
pos.close();
}catch(Exception e)
{
System.out.println("Sender Error"+e);
}

}
}

//线程读
class Receiver extends Thread
{
PipedInputStream pis;
File file;
//构造方法
Receiver(PipedInputStream pis,String fileName)
{
this.pis=pis;
file=new File(fileName);
}
public void run()
{
try
{
//写入文件内容
FileOutputStream fs=new FileOutputStream(file);
int data;
while((data=pis.read())!=-1)
{
//读取管道始端
fs.write(data);
}
pis.close();
}catch(Exception e)
{
System.out.println("Receiver Error"+e);
}
}
}
}
}

解决方案 »

  1.   

    修改了下
    import java.io.*;public class PipedIo
    {
    //构造读写的管道流对象
        public static PipedInputStream pis=new PipedInputStream();
        public static PipedOutputStream pos=new PipedOutputStream();
        
        public static void main(String [] args) throws Exception
        {
            try
            {     
                //实现关联
                pos.connect(pis);
                //构造两个线程,并启动
                PipedIo pi = new PipedIo();
                Thread t1 = new Thread(pi.new Sender(pos,"d:\\HelloWorld\\test1.txt"));
                Thread t2 = new Thread(pi.new Receiver(pis,"d:\\HelloWorld\\test2.txt"));
                t1.start();
                t2.start();
            }catch(Exception e)
            {
                System.out.println("Pipe Error"+e);
            }
            
        }
        
        //线程发送
        class Sender implements Runnable
        {
            PipedOutputStream pos;
            File file;
            //构造方法
            Sender(PipedOutputStream pos,String fileName)
            {
                this.pos=pos;
                file=new File(fileName);
            }
            //线程运行方法
            public void run()
            {
                try
                {
                    //读取文件内容
                    FileInputStream fs=new FileInputStream(file);
                    int data;
                    while((data=fs.read())!=-1)
                    {
                        //写入管道始端
                        pos.write(data);
                    }
                    pos.close();
                }catch(Exception e)
                {
                    System.out.println("Sender Error"+e);
                }
                
            }
        }
        
        //线程读
        class Receiver implements Runnable
        {
            PipedInputStream pis;
            File file;
            //构造方法
            Receiver(PipedInputStream pis,String fileName)
            {
                this.pis=pis;
                file=new File(fileName);
            }
            public void run()
            {
                try
                {
                    //写入文件内容
                    FileOutputStream fs=new FileOutputStream(file);
                    int data;
                    while((data=pis.read())!=-1)
                    {
                        //读取管道始端
                        fs.write(data);
                    }
                    pis.close();
                }catch(Exception e)
                {
                    System.out.println("Receiver Error"+e);
                }
            }
        }
    }