PipedIO:
package ThreadCommunication;
import java.io.*;
public class PipedIO {
public static void main(String[] args) {// TODO Auto-generated method stub
try{
PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream();
pos.connect(pis);
new Sender(pos, "sendFile").start();
new Receiver(pis, "receiveFile").start();
}catch(IOException e){
System.out.println("piped error:"+e);
}
}
}
Receiver:
package ThreadCommunication;
import java.io.*;
public class Receiver extends Thread {
PipedInputStream pis;
File file;
Receiver(PipedInputStream pis, String file) {
this.pis = pis;
this.file = new File(file);
}
public void run() {
try {
FileOutputStream fs = new FileOutputStream(file);
int i = pis.read();
int j = 0;
while(j<i) {
int data = pis.read();
fs.write(data);
j ++;
}
pis.close();
}catch (IOException e) {
System.out.println("Sender error:"+e);
}
}
}
Sender:
package ThreadCommunication;
import java.io.*;
public class Sender extends Thread {
PipedOutputStream pos;
File file;
Sender(PipedOutputStream pos, String file) {
this.pos = pos;
this.file = new File(file);
}
public void run() {
try {
FileInputStream fs = new FileInputStream(file);
int i = (int)file.length();
pos.write(i);
int j = 0;
while(j<i) {
int data = fs.read();
pos.write(data);
j ++;
}
}catch (IOException e) {
System.out.println("Sender error:"+e);
}
}
}