分類  >  Web前端 >

Java實現FTP上傳下載效能

tags:    時間:2013-12-09 23:21:14
Java實現FTP上傳下載功能

Java FTP客戶端工具包很多,在此我選用的Apache的FTPClient。這個包的獲取可以通過[url]http://commons.apache.org/net/[/url]來獲取,我使用的是最新的commons-net-1.4.1.zip。其中包含了眾多的java網路編程的工具包,官方文檔列舉如下:
    支持網路協議如下: 
        FTP 
        NNTP 
        SMTP 
        POP3 
        Telnet 
        TFTP 
        Finger 
        Whois 
        rexec/rcmd/rlogin 
        Time (rdate) and Daytime 
        Echo 
        Discard 
        NTP/SNTP

都很有用。在此我用到的是FTP相關的一些包。
 
在編寫程序之前,先配置一個簡單的FTP伺服器,如下圖:
 
 

下面是一個使用FTPClient來實現的FTP上傳和下載的功能,主要是對此包有個感性的認識。常式如下:
 
import org.apache.commons.io.IOUtils; 
import org.apache.commons.net.ftp.FTPClient; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.FileOutputStream; 

/** 
* Apache commons-net 試用一把,看看FTP客戶端工具做的好用不 
* 
* @author : leizhimin,2008-8-20 14:00:38。<p> 
*/
 
public class FtpTest { 
    public static void main(String[] args) { 
        testUpload(); 
        testDownload(); 
    } 

    /** 
     * FTP上傳單個文件測試 
     */
 
    public static void testUpload() { 
        FTPClient ftpClient = new FTPClient(); 
        FileInputStream fis = null; 

        try { 
            ftpClient.connect("192.168.14.117"); 
            ftpClient.login("admin", "123"); 

            File srcFile = new File("C:\\new.gif"); 
            fis = new FileInputStream(srcFile); 
            //設置上傳目錄 
            ftpClient.changeWorkingDirectory("/admin/pic"); 
            ftpClient.setBufferSize(1024); 
            ftpClient.setControlEncoding("GBK"); 
            //設置文件類型(二進位) 
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
            ftpClient.storeFile("3.gif", fis); 
        } catch (IOException e) { 
            e.printStackTrace(); 
            throw new RuntimeException("FTP客戶端出錯!", e); 
        } finally { 
            IOUtils.closeQuietly(fis); 
            try { 
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
                throw new RuntimeException("關閉FTP連接發生異常!", e); 
            } 
        } 
    } 

    /** 
     * FTP下載單個文件測試 
     */
 
    public static void testDownload() { 
        FTPClient ftpClient = new FTPClient(); 
        FileOutputStream fos = null; 

        try { 
            ftpClient.connect("192.168.14.117"); 
            ftpClient.login("admin", "123"); 

            String remoteFileName = "/admin/pic/3.gif"; 
            fos = new FileOutputStream("c:/down.gif"); 

            ftpClient.setBufferSize(1024); 
            //設置文件類型(二進位) 
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
            ftpClient.retrieveFile(remoteFileName, fos); 
        } catch (IOException e) { 
            e.printStackTrace(); 
            throw new RuntimeException("FTP客戶端出錯!", e); 
        } finally { 
            IOUtils.closeQuietly(fos); 
            try { 
                ftpClient.disconnect(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
                throw new RuntimeException("關閉FTP連接發生異常!", e); 
            } 
        } 
    } 
} 

推薦閱讀文章

Bookmark the permalink ,來源:互聯網