JAVA中使用FTPClient上傳下載


JAVA中使用FTPClient上傳下載

        在JAVA程序中,經常需要和FTP打交道,比如向FTP服務器上傳文件、下載文件,本文簡單介紹如何利用jakarta commons中的FTPClient(在commons-net包中)實現上傳下載文件。

一、上傳文件

         原理就不介紹了,大家直接看代碼吧

 1     /**
 2      * Description: 向FTP服務器上傳文件
 3      * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔紅保(cuihongbao@d-heaven.com)創建
 4      * @param url FTP服務器hostname
 5      * @param port FTP服務器端口
 6      * @param username FTP登錄賬號
 7      * @param password FTP登錄密碼
 8      * @param path FTP服務器保存目錄
 9      * @param filename 上傳到FTP服務器上的文件名
10      * @param input 輸入流
11      * @return 成功返回true,否則返回false
12      */
13     public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {
14         boolean success = false;
15         FTPClient ftp = new FTPClient();
16         try {
17             int reply;
18             ftp.connect(url, port);//連接FTP服務器
19             //如果采用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務器
20             ftp.login(username, password);//登錄
21             reply = ftp.getReplyCode();
22             if (!FTPReply.isPositiveCompletion(reply)) {
23                 ftp.disconnect();
24                 return success;
25             }
26             ftp.changeWorkingDirectory(path);
27             ftp.storeFile(filename, input);            
28             
29             input.close();
30             ftp.logout();
31             success = true;
32         } catch (IOException e) {
33             e.printStackTrace();
34         } finally {
35             if (ftp.isConnected()) {
36                 try {
37                     ftp.disconnect();
38                 } catch (IOException ioe) {
39                 }
40             }
41         }
42         return success;
43     }<pre></pre>

下面我們寫兩個小例子:

1.將本地文件上傳到FTP服務器上,代碼如下:

 1     @Test
 2     public void testUpLoadFromDisk(){
 3         try {
 4             FileInputStream in=new FileInputStream(new File("D:/test.txt"));
 5             boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", in);
 6             System.out.println(flag);
 7         } catch (FileNotFoundException e) {
 8             e.printStackTrace();
 9         }
10     }<pre></pre>

2.在FTP服務器上生成一個文件,並將一個字符串寫入到該文件中

 1     @Test
 2     public void testUpLoadFromString(){
 3         try {
 4             InputStream input = new ByteArrayInputStream("test ftp".getBytes("utf-8"));
 5             boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "D:/ftp", "test.txt", input);
 6             System.out.println(flag);
 7         } catch (UnsupportedEncodingException e) {
 8             e.printStackTrace();
 9         }
10     }<pre></pre>

二、下載文件

       從FTP服務器下載文件的代碼也很簡單,參考如下:

 1     /**
 2      * Description: 從FTP服務器下載文件
 3      * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔紅保(cuihongbao@d-heaven.com)創建
 4      * @param url FTP服務器hostname
 5      * @param port FTP服務器端口
 6      * @param username FTP登錄賬號
 7      * @param password FTP登錄密碼
 8      * @param remotePath FTP服務器上的相對路徑
 9      * @param fileName 要下載的文件名
10      * @param localPath 下載后保存到本地的路徑
11      * @return
12      */
13     public static boolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) {
14         boolean success = false;
15         FTPClient ftp = new FTPClient();
16         try {
17             int reply;
18             ftp.connect(url, port);
19             //如果采用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務器
20             ftp.login(username, password);//登錄
21             reply = ftp.getReplyCode();
22             if (!FTPReply.isPositiveCompletion(reply)) {
23                 ftp.disconnect();
24                 return success;
25             }
26             ftp.changeWorkingDirectory(remotePath);//轉移到FTP服務器目錄
27             FTPFile[] fs = ftp.listFiles();
28             for(FTPFile ff:fs){
29                 if(ff.getName().equals(fileName)){
30                     File localFile = new File(localPath+"/"+ff.getName());
31                     
32                     OutputStream is = new FileOutputStream(localFile); 
33                     ftp.retrieveFile(ff.getName(), is);
34                     is.close();
35                 }
36             }
37             
38             ftp.logout();
39             success = true;
40         } catch (IOException e) {
41             e.printStackTrace();
42         } finally {
43             if (ftp.isConnected()) {
44                 try {
45                     ftp.disconnect();
46                 } catch (IOException ioe) {
47                 }
48             }
49         }
50         return success;
51     }

ps:歡迎轉載,轉載請注明出處:http://www.cnblogs.com/liuyitian/p/4635302.html

                          寫作不易,難免有疏漏和錯誤,還請慷慨指正,不錯請推薦


                                     每天多學一點點     代碼少敲一點點 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM