1. 程式人生 > >Jdk1.7自帶的FTP檔案上傳下載

Jdk1.7自帶的FTP檔案上傳下載

Ftp相關的類庫很多,這裡以JDK自帶的FTP上傳下載功能為例。
Java程式碼  收藏程式碼
  1. package com.boonya.upload.util.simple;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.net.InetSocketAddress;  
  7. import sun.net.TelnetInputStream;  
  8. import sun.net.TelnetOutputStream;  
  9. import sun.net.ftp.FtpClient;  
  10. import sun.net.ftp.FtpProtocolException;  
  11. /** 
  12.  * Java自帶的API對FTP的操作 
  13.  * @Jdk:version 1.7 
  14.  * @Title:Ftp.java 
  15.  * @author: boonya 
  16.  * @notice: 貌似此方法有個缺陷,不能操作大檔案 
  17.  */
  18. publicclass FtpJdk  
  19. {  
  20.     /** 
  21.      *  
  22.      * 本地檔名 
  23.      */
  24.     private String localfilename;  
  25.     /** 
  26.      *  
  27.      * 遠端檔名 
  28.      */
  29.     private String remotefilename;  
  30.     /** 
  31.      *  
  32.      * FTP客戶端 
  33.      */
  34.     private FtpClient ftpClient;  
  35.     /** 
  36.      * 伺服器連線 
  37.      *  
  38.      * @param ip 
  39.      *            伺服器IP 
  40.      * @param port 
  41.      *            伺服器埠 
  42.      * @param user 
  43.      *            使用者名稱 
  44.      * @param password 
  45.      *            密碼 
  46.      * @param path 
  47.      *            伺服器路徑
     
  48.      * @throws FtpProtocolException 
  49.      *  
  50.      */
  51.     publicvoid connectServer(String ip, int port, String user, String password, String path) throws FtpProtocolException  
  52.     {  
  53.         try
  54.         {  
  55.             /* ******連線伺服器的兩種方法****** */
  56.             // 第一種方法
  57.             /* 
  58.              * ftpClient =FtpClient.create(); 
  59.              * ftpClient.connect(new InetSocketAddress(ip, port)); 
  60.              */
  61.             // 第二種方法
  62.             ftpClient = FtpClient.create(ip);  
  63.             ftpClient.login(user, null, password);  
  64.             // 設定成2進位制傳輸
  65.             ftpClient.setBinaryType();  
  66.             System.out.println("login success!");  
  67.             if (path.length() != 0)  
  68.             {  
  69.                 // 把遠端系統上的目錄切換到引數path所指定的目錄
  70.                 ftpClient.changeDirectory(path);  
  71.             }  
  72.             ftpClient.setBinaryType();  
  73.         } catch (IOException ex)  
  74.         {  
  75.             ex.printStackTrace();  
  76.             thrownew RuntimeException(ex);  
  77.         }  
  78.     }  
  79.     /** 
  80.      * 關閉連線 
  81.      *  
  82.      */
  83.     publicvoid closeConnect()  
  84.     {  
  85.         try
  86.         {  
  87.             ftpClient.close();  
  88.             System.out.println("disconnect success");  
  89.         } catch (IOException ex)  
  90.         {  
  91.             System.out.println("not disconnect");  
  92.             ex.printStackTrace();  
  93.             thrownew RuntimeException(ex);  
  94.         }  
  95.     }  
  96.     /** 
  97.      *  
  98.      * 上傳檔案 
  99.      *  
  100.      * @param localFile 
  101.      *            本地檔案 
  102.      * @param remoteFile 
  103.      *            遠端檔案 
  104.      * @throws FtpProtocolException 
  105.      */
  106.     publicvoid upload(String localFile, String remoteFile) throws FtpProtocolException  
  107.     {  
  108.         this.localfilename = localFile;  
  109.         this.remotefilename = remoteFile;  
  110.         TelnetOutputStream os = null;  
  111.         FileInputStream is = null;  
  112.         try
  113.         {  
  114.             // 將遠端檔案加入輸出流中
  115.             os = (TelnetOutputStream) ftpClient.putFileStream(this.remotefilename, true);  
  116.             // 獲取本地檔案的輸入流
  117.             File file_in = new File(this.localfilename);  
  118.             is = new FileInputStream(file_in);  
  119.             // 建立一個緩衝區
  120.             byte[] bytes = newbyte[1024];  
  121.             int c;  
  122.             while ((c = is.read(bytes)) != -1)  
  123.             {  
  124.                 os.write(bytes, 0, c);  
  125.             }  
  126.             System.out.println("upload success");  
  127.         } catch (IOException ex)  
  128.         {  
  129.             System.out.println("not upload");  
  130.             ex.printStackTrace();  
  131.             thrownew RuntimeException(ex);  
  132.         } finally
  133.         {  
  134.             try
  135.             {  
  136.                 if (is != null)  
  137.                 {  
  138.                     is.close();  
  139.                 }  
  140.             } catch (IOException e)  
  141.             {  
  142.                 e.printStackTrace();  
  143.             } finally
  144.             {  
  145.                 try
  146.                 {  
  147.                     if (os != null)  
  148.                     {  
  149.                         os.close();  
  150.                     }  
  151.                 } catch (IOException e)  
  152.                 {  
  153.                     e.printStackTrace();  
  154.                 }  
  155.             }  
  156.         }  
  157.     }  
  158.     /** 
  159.      *  
  160.      * 下載檔案 
  161.      *  
  162.      * @param remoteFile 
  163.      *            遠端檔案路徑(伺服器端) 
  164.      * @param localFile 
  165.      *            本地檔案路徑(客戶端) 
  166.      * @throws FtpProtocolException 
  167.      *  
  168.      */
  169.     publicvoid download(String remoteFile, String localFile) throws FtpProtocolException  
  170.     {  
  171.         TelnetInputStream is = null;  
  172.         FileOutputStream os = null;  
  173.         try
  174.         {  
  175.             // 獲取遠端機器上的檔案filename,藉助TelnetInputStream把該檔案傳送到本地。
  176.             is = (TelnetInputStream) ftpClient.getFileStream(remoteFile);  
  177.             File file_in = new File(localFile);  
  178.             os = new FileOutputStream(file_in);  
  179.             byte[] bytes = newbyte[1024];  
  180.             int c;  
  181.             while ((c = is.read(bytes)) != -1)  
  182.             {  
  183.                 os.write(bytes, 0, c);  
  184.             }  
  185.             System.out.println("download success");  
  186.         } catch (IOException ex)  
  187.         {  
  188.             System.out.println("not download");  
  189.             ex.printStackTrace();  
  190.             thrownew RuntimeException(ex);  
  191.         } finally
  192.         {  
  193.             try
  194.             {  
  195.                 if (is != null)  
  196.                 {  
  197.                     is.close();  
  198.                 }  
  199.             } catch (IOException e)  
  200.             {  
  201.                 e.printStackTrace();  
  202.             } finally
  203.             {  
  204.                 try
  205.                 {  
  206.                     if (os != null)  
  207.                     {  
  208.                         os.close();  
  209.                     }  
  210.                 } catch (IOException e)  
  211.                 {  
  212.                     e.printStackTrace();  
  213.                 }  
  214.             }  
  215.         }  
  216.     }  
  217.     /** 
  218.      * 函式入口 
  219.      *  
  220.      * @param agrs 
  221.      */
  222.     publicstaticvoid main(String agrs[])  
  223.     {  
  224.         String filepath[] =  
  225.         { "/temp/aa.txt""/temp/regist.log" };  
  226.         String localfilepath[] =  
  227.         { "C:\\tmp\\1.txt""C:\\tmp\\2.log" };  
  228.         FtpJdk ftp = new FtpJdk();  
  229.         /* 
  230.          * 使用預設的埠號、使用者名稱、密碼以及根目錄連線FTP伺服器 
  231.          */
  232.         try
  233.         {  
  234.             ftp.connectServer("127.0.0.1"22"boonya""[email protected]""/temp");  
  235.         } catch (FtpProtocolException e)  
  236.         {  
  237.             e.printStackTrace();  
  238.         }  
  239.         // 下載
  240.         for (int i = 0; i < filepath.length; i++)  
  241.         {  
  242.             try
  243.             {  
  244.                 ftp.download(filepath[i], localfilepath[i]);  
  245.             } catch (FtpProtocolException e)  
  246.             {  
  247.                 e.printStackTrace();  
  248.             }  
  249.         }  
  250.         String localfile = "E:\\contact.txt";  
  251.         String remotefile = "/temp/records.txt";  
  252.         // 上傳
  253.         try
  254.         {  
  255.             ftp.upload(localfile, remotefile);  
  256.         } catch (FtpProtocolException e)  
  257.         {  
  258.             e.printStackTrace();  
  259.         }  
  260.         ftp.closeConnect();  
  261.     }  

相關推薦

Jdk1.7FTP檔案下載

Ftp相關的類庫很多,這裡以JDK自帶的FTP上傳下載功能為例。 Java程式碼   package com.boonya.upload.util.simple;  import java.io.File;  import java.io.FileInputStrea

java ftp檔案下載刪除

package ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStre

java/struts/Servlet檔案下載ftp檔案下載

String s1=transUrl; // transUrl是前臺接受的引數,get接受的引數tomcat一律使用iso-8859-1編碼 transUrl=new String(transUrl.getBytes("ISO-8859-1"),"utf-8");//程式中要使用的檔名,必須轉換為gbk

Shell FTP檔案下載

1.上傳檔案到ftp 建立一個shell檔案:touch upload.sh 修改為可執行檔案:chmod +x upload.sh 編輯:vim upload.sh,指令碼內容如下 cd /user/directory/target export putfile=y

Python3的FTP檔案下載

關於 FTP 和 SFTP 服務搭建,參考連結 另關於 Python3 的 SFTP 檔案上傳下載,參見我的另外一篇部落格,連結 注:程式碼中的變數命名規則採用的是“駝峰式”命名法,這可能帶來程式碼檢查提示,在PyCharm中可以Alt + Enter忽略此類檢查

用ASP.NET的FileUpload控制元件實現對話方塊的FTP檔案功能

      最近不得已開始做網頁,一個ASP.NET的專案,需要實現FTP上傳功能,於是上網廣搜程式碼,發現FTP上傳的程式碼到處都是,隨手拈來,可是一般來說客戶端上傳檔案都需要一個檔案選擇對話方塊,正好自帶的FileUpload控制元件能夠實現。但是網上搜到FileUpl

關於ThinkCMF插件不了圖片的解決方法

.cn 方法 插件 thinkcmf 解決方法 刪除 打開 blog 文件 原因:是因為刪除了存放圖片的文件夾,這是cmf在windows的一個BUG 解決方法: 再到php.ini裏把 這個打開就解決了關於ThinkCMF自帶插件上傳不了圖片的解決方法

Android關於FTP檔案下載功能詳解

Android關於FTP檔案上傳和下載功能詳解  更新時間:2017年09月21日 11:41:14   作者:一諾的祕密花園    我要評論 這篇文章主要為大家詳細介紹了Android關於FTP檔案上傳和下載功能,具有一定的參考價值,感興趣

【高效開發外掛】09 FTPUtil FTP 檔案工具類

package com.yuu.mall.util; import org.apache.commons.net.ftp.FTPClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory;

定義input檔案樣式

檔案上傳是我們經常會用到的功能,但是原生的input樣式太醜了,能不能自定義一個input檔案上傳樣式呢? 我這裡寫了兩種方法,form表單提交跟ajax非同步提交都沒有問題,自動上傳或者點選上傳按鈕上傳也都沒問題 先看效果:     程式碼貼出來: 方法1     <!--

Java 實現ftp 檔案下載和刪除

本文利用apache ftp工具實現檔案的上傳下載和刪除。具體如下: 1、下載相應的jar包      commons-net-1.4.1.jar 2、實現程式碼如下: public class FtpUtils { //ftp伺服器地址

寶塔-PHP-伺服器-資料庫-FTP-檔案 問題集

簡介:    今天分享一下自己寫的筆記,最近部署伺服器所遇到的各種問題,比較典型的問題都寫在了筆記裡面,現在我把筆記分享給出來,希望可以給大家一點幫助~ 問題目錄: 1.寶塔設定 伺服器 本地資料庫、RDS雲資料庫 連線不上 2.寶塔設定 伺服器 FTP無法連線

Hessian4.0.7+Spring3.2.2檔案

最近用Hessian4.0.7做檔案上傳,先給出自己做試驗的樣例程式碼,寫在tomcat7下,採用servlet3.0,配置程式碼如下: ** * 基於Servlet3.0的,相當於以前<b>web.xml</b>

centos6.5 ftp檔案遇到的問題彙總

1、ftp 192.168.1.* -bash: ftp: command not found 解決方案:ftp命令沒有安裝  # yum install ftp 2、ftp: connect: 拒絕連線     解決方案:     (1

java 中 FtpClient 實現 FTP 檔案下載

package ftp; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWrit

java+jsp程式碼實現從FTP伺服器下載檔案

首先宣告一下。jsp從ftp伺服器上面下載檔案,有兩種方法1.直接給出檔案的地址 2.將檔案作為位元組流返回給瀏覽器 一 、先說第一種吧(這種發放很簡單)。 1.直接使用一個超連結:<a href='ftp://FTP使用者名稱:密碼@IP地址:埠號+ 後面是路徑 (

十八.Python模擬FTP檔案

Python 模擬FTP斷點續傳併發伺服器   #配置檔案 #伺服器配置檔案 [server_config] ip=127.0.0.1 port=8006 buffersize=1024 encoding=utf-8 #伺服器使用者資料 

FTP檔案

public class FTPUtil { private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class); private static String ftpIp = PropertiesUtil

FTP檔案demo

該demo主要是封裝了MS的Wininet.dll,方便FTP檔案上傳, 解決了在XP系統下面InternetConnect()介面在FTP伺服器不可用,連線超時嚴重,且不可控的問題。 該demo在WIN7 64 和XP 32 自測通過。 完整工程原始碼下載地址: --

用Java實現FTP批量大檔案下載(一)

本文介紹了在Java中,如何使用Java現有的可用的庫來編寫FTP客戶端程式碼,並開發成Applet控制元件,做成基於Web的批量、大檔案的上傳下載控制元件。文章在比較了一系列FTP客戶庫的基礎上,就其中一個比較通用且功能較強的j-ftp類庫,對一些比較常見的功能如進度條、