1. RMI Service Interface
package com.sinosuperman.rmiio2;
import java.rmi.Remote;
import java.rmi.RemoteException;
import com.healthmarketscience.rmiio.RemoteInputStream;
public interface RmiioService2 extends Remote {
public void sendFile(String fileName, RemoteInputStream inFile) throws RemoteException;
}
2. RMI Service Implementation Class
package com.sinosuperman.rmiio2;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import com.healthmarketscience.rmiio.RemoteInputStream;
import com.healthmarketscience.rmiio.RemoteInputStreamClient;
public class RmiioServiceImpl2 extends UnicastRemoteObject implements Serializable, RmiioService2 {
private static final long serialVersionUID = -5776252535031796604L;
public RmiioServiceImpl2() throws RemoteException {
}
@Override
public void sendFile(String fileName, RemoteInputStream inFile) throws RemoteException {
try {
InputStream inStream = RemoteInputStreamClient.wrap(inFile);
store(inStream, "temp" + File.separator + fileName);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void store(InputStream inStream, String filePath) {
try {
BufferedInputStream inStreamBuff = new BufferedInputStream(inStream);
FileOutputStream fileOutStream;
fileOutStream = new FileOutputStream(filePath);
int size = 0;
byte[] byteBuff = new byte[1024];
while ( (size = inStreamBuff.read(byteBuff)) != -1) {
fileOutStream.write(byteBuff, 0, size);
}
fileOutStream.close();
inStreamBuff.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
原文链接: http://blog.csdn.net/poechant/article/details/7031728