java FTPClient的使用

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。
所用到的jar包有:
commons-net-1.4.1.jar
jakarta-oro.jar

一、上传文件查看源码打印?01 文件上传源代码

02 /**

03 * Description: 向FTP服务器上传文件

04 * @Version1.0

05 * @param url FTP服务器hostname

06 * @param port FTP服务器端口

07 * @param username FTP登录账号

08 * @param password FTP登录密码

09 * @param path FTP服务器保存目录

10 * @param filename 上传到FTP服务器上的文件名

11 * @param input 输入流

12 * @return 成功返回true,否则返回false

13 */

14 public static boolean uploadFile(

15 String url,//FTP服务器hostname

16 int port,//FTP服务器端口

17 String username, // FTP登录账号

18 String password, //FTP登录密码

19 String path, //FTP服务器保存目录

20 String filename, //上传到FTP服务器上的文件名

21 InputStream input // 输入流

22 ) {

23 boolean success = false;

24 FTPClient ftp = new FTPClient();

25 try {

26 int reply;

27 ftp.connect(url, port);//连接FTP服务器

28 //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

29 ftp.login(username, password);//登录

30 reply = ftp.getReplyCode();

31 if (!FTPReply.isPositiveCompletion(reply)) {

32 ftp.disconnect();

33 return success;

34 }

35 ftp.changeWorkingDirectory(path);

36 ftp.storeFile(filename, input);

37

38 input.close();

39 ftp.logout();

40 success = true;

41 } catch (IOException e) {

42 e.printStackTrace();

43 } finally {

44 if (ftp.isConnected()) {

45 try {

46 ftp.disconnect();

47 } catch (IOException ioe) {

48 }

49 }

50 }

51 return success;

52 }
以下是文件上传的测试用例:查看源码打印?01 /**

02 * 将本地文件上传到FTP服务器上

03 *

04 */

05 public void testUpLoadFromDisk(){

06 try {

07 FileInputStream in=new FileInputStream(new File("D:/test.txt"));

08 boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", in);

09 System.out.println(flag);

10 } catch (FileNotFoundException e) {

11 e.printStackTrace();

12 }

13 }
查看源码打印?01 /**

02 * 在FTP服务器上生成一个文件,并将一个字符串写入到该文件中

03 *

04 */

05 public void testUpLoadFromString(){

06 try {

07 String str = "这是要写入的字符串!";

08 InputStream input = new ByteArrayInputStream(str.getBytes("utf-8"));

09 boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", input);

10 System.out.println(flag);

11 } catch (UnsupportedEncodingException e) {

12 e.printStackTrace();

13 }

14 }
二、文件下载查看源码打印?01 文件下载源代码

02 /**

03 * Description: 从FTP服务器下载文件

04 * @Version1.0

05 * @param url FTP服务器hostname

06 * @param port FTP服务器端口

07 * @param username FTP登录账号

08 * @param password FTP登录密码

09 * @param remotePath FTP服务器上的相对路径

10 * @param fileName 要下载的文件名

11 * @param localPath 下载后保存到本地的路径

12 * @return

13 */

14 public static boolean downFile(

15 String url, //FTP服务器hostname

16 int port,//FTP服务器端口

17 String username, //FTP登录账号

18 String password, //FTP登录密码

19 String remotePath,//FTP服务器上的相对路径

20 String fileName,//要下载的文件名

21 String localPath//下载后保存到本地的路径

22 ) {

23 boolean success = false;

24 FTPClient ftp = new FTPClient();

25 try {

26 int reply;

27 ftp.connect(url, port);

28 //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

29 ftp.login(username, password);//登录

30 reply = ftp.getReplyCode();

31 if (!FTPReply.isPositiveCompletion(reply)) {

32 ftp.disconnect();

33 return success;

34 }

35 ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录

36 FTPFile[] fs = ftp.listFiles();

37 for(FTPFile ff:fs){

38 if(ff.getName().equals(fileName)){

39 File localFile = new File(localPath+"/"+ff.getName());

40 OutputStream is = new FileOutputStream(localFile);

41 ftp.retrieveFile(ff.getName(), is);

42 is.close();

43 }

44 }

45

46 ftp.logout();

47 success = true;

48 } catch (IOException e) {

49 e.printStackTrace();

50 } finally {

51 if (ftp.isConnected()) {

52 try {

53 ftp.disconnect();

54 } catch (IOException ioe) {

55 }

56 }

57 }

58 return success;

59 }
以下是文件下载的测试用例:查看源码打印?01 /**

02 * 将FTP服务器上文件下载到本地

03 *

04 */

05 public void testDownFile(){

06 try {

07 boolean flag = downFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", "D:/");

08 System.out.println(flag);

09 } catch (Exception e) {

10 e.printStackTrace();

11 }

12 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值