Ajuda com cliente RMI

Pessoal, srá que alguém pode me explicar como fasso o cliente RMI para o seguinte servidor:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;



public class FileSystemServer extends UnicastRemoteObject implements FileSystemInter {
	
	public FileSystemServer() throws RemoteException {
		super();
	}
	
	public String criarArquivo(String arquivo) {
		JFileChooser jfc = new JFileChooser();
		JOptionPane.showMessageDialog(null,"Selecione o diretorio onde quer salvar o arquivo");
		jfc.showSaveDialog(null);
		
		String text = "Write your text here";  
        
        FileWriter file;
        
        File arq = jfc.getSelectedFile();
          
        try {  
        	
            file = new FileWriter(new File(arq.getPath()));  
            file.write(text);  
            file.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }
		return null;
		
	}
	
	public String lerArquivo(String arquivo) {
		JFileChooser jfc = new JFileChooser();
		JOptionPane.showMessageDialog(null,"Escolha o arquivo que sera lido");
		jfc.showOpenDialog(null);
		File arquivod = jfc.getSelectedFile();
		StringBuffer fs = new StringBuffer();
		   try
		   {
		        BufferedReader in = new BufferedReader(new FileReader(arquivod));
		        String str;
		        while (in.ready()) 
		        {
		            str = in.readLine();
		            fs.append(str);
		            System.out.println(str);
		        }
		        in.close();
		   }
		   catch (IOException e)
		   {
			   System.out.println("	Arquivo nao encontrado");
		   }
		return null;	
	}

	public String copiarArquivo(String de, String para) {
		JFileChooser jfc = new JFileChooser();
		JOptionPane.showMessageDialog(null,"Escolha o arquivo que sera movido");
		jfc.showOpenDialog(null);
		File arquivoc = jfc.getSelectedFile();
		JOptionPane.showMessageDialog(null,"Selecione o diretorio de destino");
		jfc.showOpenDialog(null);
		arquivoc.renameTo(new File(jfc.getCurrentDirectory().getAbsolutePath(), arquivoc.getName()));
		return null;
		
	}

	public String deletarArquivo(String arquivo) {
		JFileChooser jfc = new JFileChooser();
		JOptionPane.showMessageDialog(null,"Escolha o arquivo que sera deletado");
		jfc.showOpenDialog(null);
		File arquivod = jfc.getSelectedFile();
		
		StringBuffer fs = new StringBuffer();
		   try
		   {
		        BufferedReader in = new BufferedReader(new FileReader(arquivod));
		        String str;
		        while (in.ready()) 
		        {
		            str = in.readLine();
		            fs.append(str);
		            System.out.println(str);
		        }
		        in.close();
		   }
		   catch (IOException e)
		   {
			   System.out.println("Arquivo nao encontrado");
		   }
		 
		   arquivod.delete();
		return null;

	}

	public static void main(String[] args){
		try{
			FileSystemServer obj = new FileSystemServer();
			Naming.rebind("//localhost/FileSystem", obj);
			System.out.println("Serviços prontos");
		}
		catch(Exception e){
			System.out.println("Serviços não disponíveis: " + e.getMessage());
			e.printStackTrace();
		}
	}
}
		

Olhei alguns exemplos, mas todos são apenas de transmissão de mensagem do cliente para o servidor, portnto uma unica funcionalidade, dentrod o método main do cliente. Mas nesse meu servidor, tem várias funcionalidades, então não da pra usar só o main. Alguém pode me ajudar. Ou mostra algum exemplo de cliente?