Java操作ftp,上傳,下載,刪除操作

使用java commons net包中的api可以方便操作ftp操作。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;public class FtpCtrl {public static void main(String[] args) throws Exception {String url = "ip";int port = 21;String username = "username";String password = "password";String path = "/";String filename = "ftp.test.tmp";FileInputStream fis = new FileInputStream("/home/iamsuperman/ftp.txt");uploadFile(url, port, username, password, path, filename, fis);}/*** @param ip*            FTP服務器IP地址* @param port*            FTP服務器端口* @param username*            FTP服務器登錄名* @param password*            FTP服務器密碼* @param remotePath*            遠程文件路徑* @param fileName*            待刪除的文件名* @return* @see [類、類#方法、類#成員]*/public static boolean deleteFtpFile(String ip, int port, String username, String password, String remotePath,String fileName) {boolean success = false;FTPClient ftp = new FTPClient();try {int reply;// 連接FTP服務器if (port > -1) {ftp.connect(ip, port);} else {ftp.connect(ip);}// 登錄
            ftp.login(username, password);reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return success;}// 轉移到FTP服務器目錄
            ftp.changeWorkingDirectory(remotePath);success = ftp.deleteFile(remotePath + "/" + fileName);ftp.logout();} catch (IOException e) {e.printStackTrace();success = false;} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {e.printStackTrace();}}}return success;}/*** Description: 從FTP服務器下載文件* * @param ip*            FTP服務器hostname* @param port*            FTP服務器端口* @param username*            FTP登錄賬號* @param password*            FTP登錄密碼* @param remotePath*            FTP服務器上的相對路徑* @param fileName*            要下載的文件名* @param localPath*            下載后保存到本地的路徑* @return*/public static boolean downloadFile(String ip, int port, String username, String password, String remotePath,String fileName, String localPath) {boolean success = false;FTPClient ftp = new FTPClient();try {int reply;// 連接FTP服務器if (port > -1) {ftp.connect(ip, port);} else {ftp.connect(ip);}ftp.login(username, password);// 登錄reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return success;}ftp.changeWorkingDirectory(remotePath);// 轉移到FTP服務器目錄FTPFile[] fs = ftp.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(fileName)) {File localFile = new File(localPath + "/" + ff.getName());OutputStream is = new FileOutputStream(localFile);ftp.retrieveFile(ff.getName(), is);is.close();}}ftp.logout();success = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {e.printStackTrace();}}}return success;}/*** Description: 向FTP服務器上傳文件* * @param ip*            FTP服務器hostname* @param port*            FTP服務器端口,如果默認端口請寫-1* @param username*            FTP登錄賬號* @param password*            FTP登錄密碼* @param path*            FTP服務器保存目錄* @param filename*            上傳到FTP服務器上的文件名* @param input*            輸入流* @return 成功返回true,否則返回false*/public static boolean uploadFile(String ip, int port, String username, String password, String path,String filename, InputStream input) {boolean success = false;FTPClient ftp = new FTPClient();try {int reply;// 連接FTP服務器if (port > -1) {ftp.connect(ip, port);} else {ftp.connect(ip);}// 登錄FTP
            ftp.login(username, password);reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return success;}ftp.changeWorkingDirectory(path);ftp.storeFile(filename, input);input.close();ftp.logout();success = true;} catch (IOException e) {success = false;e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {e.printStackTrace();}}}return success;}}

==============================================================================
獲取連接時候:
ftp.enterLocalPassiveMode();
這句話特別重要。

?

轉載于:https://www.cnblogs.com/swbzmx/p/5604431.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256948.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Dynagen0.11+Pemuwrapper入手麻煩二三事——告訴初學者直路

Dynagen在數度難產后終于誕生了0.11版本,這是個里程碑似的版本,他整合了confDynagen和Pemuwrapper,使得我們在搭建復雜安全環境下的拓撲變得更容易和易于調整。confDynagen的具體介紹這里就從略了,我們著重看下Pemuwrapper的問題。…

第五部分 一階邏輯等值演算與推理

目錄 基本等值式 例1 將下面命題用兩種形式符號化, 并證明兩者等值: 例2 將公式化成等值的不含既有約束出現、又有自由出現 例3 設個體域D{a,b,c}, 消去下述公式中的量詞: 例4 求下列公式的前束范式 推理的形式結構 定義5.3 自然推理系統 構造推理證明的實例 例5 在自然推理系…

從易到難,寫一個JavaScript加載器之一

先上代碼: 1 (function(global) {2 var createScript, insertScript, makeLoadQueue;3 createScript function(src) {4 var script;5 script document.createElement(SCRIPT);6 script.src "" src ".js";7 return script;8 };9…

關于怎么怎么把 unsingned char 數據轉換為 Opencv 的Mat類型,并且吧圖像顯示出來

1、定義 unsignde char* A; 2、定義cv::Mat B(cv::Size(800,500),CV_8U) 3、使用c語言的 memcpy(B.data, A,800*500)//將A指針的數據復制到B中的數據內存,并且給出內存大小 4最后unsignde char 類型數據就會被轉化為Mat類型,并且可以顯示出…

學習筆記(31):Python網絡編程并發編程-定時器

立即學習:https://edu.csdn.net/course/play/24458/296448?utm_sourceblogtoedu 定時器:threading.Timer 1.概念:定時器就是實現過多久去執行什么事情 2.相關函數 1)Timer(self,interval,function,args()) interval:定時的時間 functio…

vs2012 與 win7 不兼容的問題

我用的是win7 64位系統,所以安裝位置那里是“C:\Program Files (x86)”,多了個(x86)。 百度搜索到園子里的師兄給的解決辦法http://www.cnblogs.com/mumuliang/archive/2013/08/20/3270628.html 裝這個補丁: Update for Microsoft Visual Stu…

Scrum方法論(四)

本文轉自桂素偉51CTO博客,原文鏈接: http://blog.51cto.com/axzxs/1358371,如需轉載請自行聯系原作者

atoi(),函數,將字符串轉為整形數字

C 庫函數 int atoi(const char *str) 把參數 str 所指向的字符串轉換為一個整數&#xff08;類型為 int 型&#xff09;。 測試用例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>int main() {int val;char str[20];strcpy(str, …

學習筆記(32):Python網絡編程并發編程-線程queue

立即學習:https://edu.csdn.net/course/play/24458/296449?utm_sourceblogtoedu 線程queue 一&#xff1a;Queue先進先出 1.queue.Queue(n):創建一個最大容量為n的隊列 2.queue.Queue(n).put():添加元素 3.queue.Queue(n).get():取元素 4.put()和get(),默認阻塞狀態為True&am…

第一天,仔細學習了下:common.inc.php(Discuz6.1.0核心文件)01

<?php /* April 18,2012 discuz二次開發學習 author:xuqin 不能為了完成任務去做一件事&#xff0c;要舉一反三&#xff0c;融會貫通的去學習。 */ error_reporting(0); /* * error_reporting(0); //抑制所有的出錯信息 * error_reporting(E_ALL);//顯示所有的出錯信息 …

acdream 1023 xor按位思考

思路&#xff1a;記答案為ans&#xff0c;統計出數列A和B在某二進制某一位上有多少個1&#xff0c;如果個數相同&#xff0c;則ans那一位上為0&#xff08;因為題目要求最小的滿足條件的值&#xff09;&#xff0c;如果不一樣&#xff08;則需要考慮那一位上異或個1&#xff09…

system的相關用法

system()—執行shell命令也就是向dos發送一條指令。 相關函數&#xff1a;fork, execve, waitpid, popen頭文件&#xff1a;#include <stdlib.h>定義函數&#xff1a;int system(const char * string); system("pause")可以實現凍結屏幕&#xff0c;便于觀察…

學習筆記(33):Python網絡編程并發編程-進程池線程池

立即學習:https://edu.csdn.net/course/play/24458/296451?utm_sourceblogtoedu 進程池與線程池&#xff1a; 一般應用在網站上&#xff0c;進程池或線程池最大的數量一般需要盡可能地大但是不要超出服務器的承載范圍 1.進程池&#xff1a; 1)concurrent.futures.ProcessP…

gulp配置實現修改js、css、html自動刷新

寫在前面&#xff1a; 本配置支持es6、less、react 1.首先 給出初始的目錄結構 給出執行gulp后的目錄結構 給出執行gulp --p后的目錄結構 2.package.json里是一個寫入。文件描述了npm包的相關配置信息&#xff08;作者、簡介、包依賴等&#xff09;和所需模塊。 {"name&qu…

作為程序員之正則表達式

目錄 正則表達式基礎語法標準字符集合自定義的字符集合多行、單行模式高級語法選擇符和分組反向引用預搜索/零寬斷言例子匹配郵箱正則表達式 基礎語法 標準字符集合 \D 和[^\d]意思一樣&#xff0c;就是與 \d 相反 REG意義\ddigital表示 0 到 9 之間任意的一個數字\wworld表示任…

javascript 的dateObj.getTime() 在為C#的獲取方式

publicstringGetTime() { Int64 retval 0; DateTime st newDateTime(1970, 1, 1); TimeSpan t (DateTime.Now.ToUniversalTime() -st); retval (Int64)(t.TotalMilliseconds 0.5); returnretval.ToString(); } 在Net中的實際測試代碼 MSScriptControl.Scri…

學習筆記(34):Python網絡編程并發編程-異步調用與回調機制

立即學習:https://edu.csdn.net/course/play/24458/296452?utm_sourceblogtoedu 1.知識點&#xff1a;&#xff08;詳細見代碼注釋&#xff09; 1&#xff09;同步調用&#xff1a; res1 pool.submit(ju,john1).result() 2&#xff09;異步調用 pool.submit(ju,john1) 3…

c和c++的結構體使用

一&#xff1a;結構體其實有兩種初始化方式 1、直接把多有的變量在其內部通過形參傳入到結構體中&#xff0c;結構體定義在程序的最開頭是個全局變量&#xff1b;這個時候參數已經傳入進來&#xff0c;在本文件中都可以直接使用該結構體的所有成員變量 2、先定義&#xff0c;…

python第三方庫安裝的各種方法(全網最全,最簡單易懂)

使用鏡像&#xff1a; pip install virtualenv -i https://pypi.douban.com/simple 國內源&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple module_name 或 pip install -i https://pypi.douban.com/simple module_name 國內的鏡像源來加速 pip inst…

Jmeter服務器監控插件使用

Jmeter服務器監控插件使用 Jmeter-Plugins支持CPU、Memory、Swap、Disk和Network的監控&#xff0c;在測試過程中更加方便進行結果收集和統計分析。 一、準備工作&#xff1a; 1、下載Jmeter-Plugins插件&#xff0c;下載Server端ServerAgent插件&#xff1b; 2、解壓Jmeter-Pl…