2015-08-27 20 views
0

所以我试图做这样的事情以外的东西:如果连接到FTP服务器做一些事情,做别的

If connected 
    do something on ftp files; 
else 
    do something on local files; 

我试图做到这一点那样:

public boolean checkConnection() { 
    boolean answer = client.isConnected(); 
    if (answer) { 
     return true; 
    } else { 
     return false; 
    } 
} 

if (ftpConnection.checkConnection()) { 
    System.out.println("Connected!"); 
} else { 
    System.out.println("Not connected."); 
} 

当我正在使用版本,我连接到FTP服务器我已经“连接”。但是当我运行其他版本时,我有RuntimeException。有人可能想到我该如何解决我的问题?

+0

什么意思*当我运行其他版本* ??你可以发布你的'RuntimeException'吗? –

+0

当我运行“ftpConnection = null”的版本时,我有“java.lang.NullPointerException”而不是“未连接”。 –

+0

'ftpConnection = null'会将'ftpConnection'设置为'null',否则'NullPointerException'是完全正常的 –

回答

0

对我来说,听起来好像你的客户端在无法连接服务器时返回RunTimeException,所以也许你添加了try/catch块,如果引发异常,检查异常是否显示“无法连接“并返回false

0

您可以使用状态设计模式,将状态对象用于连接状态和未连接状态。这样的事情:

interface ConnectionState { 
    public void doStuff(); 
} 

private final ConnectionState FTP_CONNECTION_STATE = new ConnectionState() { 
    @Override 
    public void doStuff() { 
     ... // do something on FTP files 
    } 
}; 

private final ConnectionState LOCAL_CONNECTION_STATE = new ConnectionState() { 
    @Override 
    public void doStuff() { 
     ... // do something on local files 
    } 
}; 

private ConnectionState connectionState; 

public final void tryToConnect() { 
    .... 
    if (connected) { 
     connectionState = FTP_CONNECTION_STATE; 
    } else { 
     connectionState = LOCAL_CONNECTION_STATE; 
    } 
} 

public final void doStuff() { 
    if (connectionState == null) { 
     throw new IllegalStateException("tryToConnect() has not been called"); 
    } 
    connectionState.doStuff(); 
} 
相关问题