
Java 实现ftp上传下载文件
发布日期:2021-05-07 10:49:46
浏览次数:15
分类:原创文章
本文共 3497 字,大约阅读时间需要 11 分钟。
jar包:commons-net-ftp-2.0.jar
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.FTP;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;public class FtpManager { public static void main(String[] args) { try { String ip = "192.168.1.114"; String username = "xya_zzzz"; String pwd = "xya_admin"; String path = "./testftp/"; boolean uploadResult = uploadFile(ip,username,pwd,path,"111.jpg",new FileInputStream(new File("F:\\111.jpg"))); if(uploadResult){ System.out.println("上传文件成功"); }else{ System.out.println("上传文件失败"); } boolean downloadResult = downFile(ip, username, pwd, path,"111.jpg","E:\\"); if(downloadResult){ System.out.println("下载文件成功"); }else{ System.out.println("下载文件失败"); } } catch (Exception e) { e.printStackTrace(); } } /** * Description: 向FTP服务器上传文件 * @param ip FTP服务器hostname * @param username FTP登录账号 * @param password FTP登录密码 * @param path FTP服务器保存目录 * @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String ip,String username, String password, String path, String filename, InputStream input){ boolean success = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(ip);//连接FTP服务器 //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);//登录 ftp.setFileType(FTP.BINARY_FILE_TYPE);//登陆后设置文件类型为二进制否则可能导致乱码文件无法打开 ftp.setControlEncoding("UTF-8"); //设置格式 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return success; } ftp.changeWorkingDirectory(path); if(!ftp.storeFile(filename, input)){ return success; } input.close(); ftp.logout(); success = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { ioe.printStackTrace(); } } } return success; } /** * Description: 从FTP服务器下载文件 * @param url FTP服务器hostname * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */ public static boolean downFile(String url, String username, String password, String remotePath,String fileName,String localPath) { boolean success = false; FTPClient ftp = new FTPClient(); try { int reply; // ftp.connect(url, port); ftp.connect(url);//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 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 ioe) { ioe.printStackTrace(); } } } return success; } }
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月10日 19时31分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
老Python总结的字典相关知识
2019-03-06
jQuery的事件绑定与触发 - 学习笔记
2019-03-06
Linux上TCP的几个内核参数调优
2019-03-06
记一次讲故事机器人的开发-我有故事,让机器人来读
2019-03-06
seo 回忆录百度基本概念(一)
2019-03-06
netcore中使用session
2019-03-06
Android 开发学习进程0.25 自定义控件
2019-03-06
多媒体文件格式全解说(下)--图片
2019-03-06
淘宝WAP版小BUG分析
2019-03-06
asp.net打印网页后自动关闭网页【无需插件】
2019-03-06
【Maven】POM基本概念
2019-03-06
【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
2019-03-06
【设计模式】单例模式
2019-03-06
【Linux】2.3 Linux目录结构
2019-03-06
远程触发Jenkins的Pipeline任务的并发问题处理
2019-03-06
Web应用程序并发问题处理的一点小经验
2019-03-06
entity framework core在独立类库下执行迁移操作
2019-03-06
Asp.Net Core 2.1+的视图缓存(响应缓存)
2019-03-06
RE套路 - 关于pyinstaller打包文件的复原
2019-03-06