Java 使用SimpleFTP断开FTP服务器连接的正确方法是什么?
特别是对Java来说非常陌生,使用SimpleFTP库将文件发送到服务器 似乎对SimpleFTP对象的任何方法调用都需要包含在try-catch中。那么,从服务器断开连接的正确方法是什么 例如:Java 使用SimpleFTP断开FTP服务器连接的正确方法是什么?,java,ftp,Java,Ftp,特别是对Java来说非常陌生,使用SimpleFTP库将文件发送到服务器 似乎对SimpleFTP对象的任何方法调用都需要包含在try-catch中。那么,从服务器断开连接的正确方法是什么 例如: private void ftp() { int portNumber = 21; SimpleFTP ftp = new SimpleFTP(); try { ftp.connect("serverAddress", portNumber, "use
private void ftp()
{
int portNumber = 21;
SimpleFTP ftp = new SimpleFTP();
try
{
ftp.connect("serverAddress", portNumber, "userName", "password");
ftp.bin();
ftp.cwd("dir");
ftp.stor(new File("filePath"));
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
ftp.disconnect();
}
}
由于正文中的内容,此文件无法编译。如果我把它移到
try
块并最终废弃块,它将编译。。。但是,如果我的应用程序连接到服务器,然后在执行其他任务时抛出异常,该怎么办?用自己的try-catch块围绕断开连接调用
finally
{
if (ftp != null) {
try {
ftp.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
您没有提到的是,出现问题的原因是disconnect()
也被声明为抛出IOException
查看SimpleFTP
的源代码,您会发现:
public synchronized void disconnect() throws IOException {
try {
sendLine("QUIT");
}
finally {
socket = null;
}
}
它所做的只是将QUIT
命令发送到远程FTP服务器,然后在其finally
块中删除对套接字的引用。如果那样的话。。。。这意味着套接字已经死了,但由于您正在断开连接,所以您真的不在乎(如果我编写了该客户端,我会捕获并忽略该异常,而不会让它抛出)
在您的finally
块中,只需将其包装在自己的try/catch块中,而不要在catch块中执行任何操作。选项B只是将其放入try
块中。它将抛出的唯一原因是,如果套接字已断开连接,并且在出现异常后让SimpleFTP
实例脱离范围,那么也会清理掉所有问题。Ah,很抱歉没有提供信息。虽然Java与C#非常相似,但有一点我并不熟悉,因为它要么不存在,要么就是我没有遇到过。由于解释较长,请将您的答案标记为:)