FTPClient中 retrieveFileStream 的用法

本文介绍了如何使用org.apache.commons.net.ftp.FTPClient进行FTP文件操作,重点讲解了retrieveFileStream方法的正确用法,并解决了文件传输完成后如何正确结束传输的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作需要使用了org.apache.commons.net.ftp.FTPClient来操作FTP,记录一下心得。

这个类封装的很完善,使用起来也很简单,只是在使用retrieveFileStream的时候碰到了一点小问题,就是不知道怎么完成传输状态,尝试发送abor指令也不行。在咨询了bianbian和查看了源代码之后看到这一段说明以后解决问题:

/*
* You must close the InputStream when you
* finish reading from it. The InputStream itself will take care of
* closing the parent data connection socket upon being closed. To
* finalize the file transfer you must call
* {@link #completePendingCommand completePendingCommand } and
* check its return value to verify success.
*/

代码如下:

import org.apache.commons.net.ftp.FTPClient;



import java.io.IOException;

import java.io.InputStream;

import java.net.SocketException;



public class TestFTP {



	public static void main(String[] args) {

		try {

			FTPClient ftp = new FTPClient();

			// initialize ftp connection

			String remotefile = "test.xml";

			InputStream is = null;



			is = ftp.retrieveFileStream(remotefile);



			if (is != null) {

				is.close();

			}



			if (!ftp.completePendingCommand()) {

				ftp.logout();

				ftp.disconnect();

			}



			// continue

		} catch (SocketException e) {

			e.printStackTrace();

		} catch (IOException e) {

			e.printStackTrace();

		}

	}

}

博文来源: http://blog.sunshow.net/2007/03/ftpclient-retrievefilestream-usage/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值