/** * File Created at 2015年8月4日 * * Copyright 2015 star.com Limited. * All rights reserved. */ package com.star.daffodil.common.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; /** * <p> * FTP上传下载工具类 * </p> * @author qunxing.du * */ public class FTPUtil { private static String HOSTNAME = "127.0.0.1"; private static int PORT = 21; private static String USERNAME = "admin"; private static String PASSWORD = "admin"; private static FTPClient ftp; private FTPUtil(){} private static FTPUtil ftpUtil; public static FTPUtil getInstance(){ if(ftp == null){ ftp = new FTPClient(); } if(ftpUtil == null){ ftpUtil = new FTPUtil(); } return ftpUtil; } /** * 连接ftp服务器 */ private void connect(){ FTPClientConfig ftpClientConfig = new FTPClientConfig(FTPClientConfig.SYST_NT); ftp.configure(ftpClientConfig); try { ftp.connect(HOSTNAME, PORT); ftp.login(USERNAME, PASSWORD); } catch (IOException e) { e.printStackTrace(); } } /** * 退出关闭连接 */ private void close(){ if(ftp.isConnected()){ try { ftp.logout(); } catch (IOException e) { e.printStackTrace(); } finally{ try { ftp.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } public boolean upload(String dest, InputStream is){ boolean flag = false; connect(); int reply = ftp.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)){ close(); return flag; } try { String destFile = dest.replace("\\\\", "/"); String destDir = destFile.substring(0, destFile.lastIndexOf("/")); FTPFile[] ftpFiles = ftp.listDirectories("\\"); boolean isExist = false; for (FTPFile ftpFile : ftpFiles) { if(destDir.equals(ftpFile.toString())){ isExist = true; break; } } if(!isExist){ ftp.makeDirectory(destDir); } ftp.setFileType(FTP.BINARY_FILE_TYPE); flag = ftp.storeFile(dest, is); if(flag){ System.out.println("上传成功"); }else{ System.out.println("上传失败"); } } catch (IOException e) { e.printStackTrace(); }finally{ if(is != null ){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } close(); } return flag; } public InputStream download(String file){ InputStream is = null; connect(); int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { close(); return null; } try { is = ftp.retrieveFileStream(file); if(ftp.completePendingCommand()){ System.out.println("下载流读取完成"); } } catch (IOException e) { e.printStackTrace(); } finally { close(); } return is; } public static void main(String[] args) { InputStream is = getInstance().download("/upload11/d21/gif/1439029019947.gif"); FileOutputStream fos = null; File file = new File("D:/a2.gif"); try { Files.copy(is, file.toPath(), StandardCopyOption.REPLACE_EXISTING); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if(is != null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } InputStream uis = null; try { uis = new FileInputStream("D:/a2.gif"); getInstance().upload("upload11/d21/gif/" + GlobalUtil.getUniqueNumber() + ".gif", uis); } catch (FileNotFoundException e) { e.printStackTrace(); } finally{ if(uis != null){ try { uis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } }
相关推荐
apache commons-net-3.5 实现 FTP 上传文件的神器,拿走不谢! 主要涉及上传文件的jar,希望能帮到你。
apache-jakarta旗下的所有开源...apache-jakarta-commons-net-ftp.jar apache-jakarta-oro.jar apache-jakarta-oro-2.0.8.jar commons-io-2.1-bin commons-logging-1.1.1-bin commons-modeler-2.0.1 commons-net-1.4.1
使用apache commons-net包实现文件ftp上传
jar包,亲测可用
市面上的大部分jar包下载了都不可用,这个保证能用!包是二合一打包的! apache的FTP可以解决sun的ftp在操作过程中遇到中文会乱码的问题,用法大同小异,看API就会了!
包含commons-net-3.4.jar,commons-net-3.4-sources.jar,commons-net-examples-3.4.jar包,ftp上传主要依靠commons-net-3.4.jar
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...
NULL 博文链接:https://yangmeng.iteye.com/blog/2077964
使用JDK1.8、SpringBoot2.2.10.RELEASE、lombok1.18.8、guava23.0、hutool5.3.10、commons-pool2 2.7.0、tika1.22等实现多Ftp连接池实现,通过守护线程实现连接池内连接可用性校验,配置最大、最小连接个数防止Ftp...
Java apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出(3.3版本),Android可用
JAVA,ftp开发客户端用到的四个JAR包,是apache组织对FTP客户端编程的封装。
Java apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出(3.0.1版本),Android可用
.net.ftp.FTPClient jar ,exaple, commons-net-2.0.jar
Apache Commons Net库包含网络实用程序和协议实现的集合。 支持的协议包括:Echo,Finger,FTP,NNTP,NTP,POP3(S),SMTP(S),Telnet,Whois 文献资料 可以在上找到更多信息。 可以浏览 。 与Apache Commons ...
commons各种jar包下载 commons-beanutils-1.8.3.jar commons-codec-1.7.jar commons-collections-3.2.1.jar commons-dbcp-1.4.jar ...commons-net-ftp-2.0.jar commons-pool-1.3.jar common-utils.jar
NULL 博文链接:https://vakinge.iteye.com/blog/487486
android 上的ftp服务器例子,通过ApacheFtpServer实现,依赖以下jar包: commons-...太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
org.apache.commons.net.ftp.FTPClient的最新jar报
org.apache.commons.net.ftp的官方完整jar包 放心使用
Apache ftp上传所需jar包 commons-net-3.0.1.jar ftp4j-1.6.1.jar