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 }

你可能感兴趣的:(FTPClient)