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.mzph.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…