java FTPClient的运用ITeye - 威尼斯人

java FTPClient的运用ITeye

2019年02月28日11时38分03秒 | 作者: 元柏 | 标签: 服务器,文件,运用 | 浏览: 2776

在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 }

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章