这里只提供Java从FTP下载文件(获取文件流)的示例。
/** * 文件工具类 * */ public final class FileUtil { /** * 加载properties配置文件 * * @param filePath properties配置文件 * @return 返回Properties对象 */ public static Properties loadProperties(String filePath) { Properties properties = new Properties(); try { properties.load(new FileInputStream(new File(filePath))); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return properties; } }
import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.apache.commons.io.IOUtils; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.apache.log4j.Logger; /** * FTP操作器 */ public class FTPHandler { /** * 日志实例 */ private static final Logger logger = Logger.getLogger(FTPHandler.class); /** * classes文件夹根目录全路径 */ private static final String CLASS_PATH = FTPHandler.class.getResource("/").getPath().substring(1); /** * config目录名称 */ private static final String CONFIG_DIR = "config"; /** * ftp连接配置 */ private Properties ftpConfig; /** * FTPHandler 单粒对象 */ public static FTPHandler instance; /** * 构造方法私有化 */ private FTPHandler() { this.init(); } /** * */ private void init() { //ftp配置文件路径 String ftpConfigPath = CLASS_PATH.substring(0, CLASS_PATH.length() - 8) + FTPHandler.CONFIG_DIR + "/" + "ftpserver.properties"; ftpConfig = FileUtil.loadProperties(ftpConfigPath); } /** * 获取FTPHandler单粒对象 * * @return */ public static synchronized FTPHandler getInstance() { if (null == instance) { instance = new FTPHandler(); } return instance; } /** * 根据区域标记。不同的区域使用不同的账号登陆FTP * * @param areaFlag 区域标记 * @param filePath 文件路径 * @return */ public InputStream getInputStream(String areaFlag, String filePath) { FTPClient ftp = this.ftpFactory(areaFlag); InputStream in = null; try { in = ftp.retrieveFileStream(filePath); } catch (IOException e) { logger.error("获取文件流失败,文件路径:" + filePath, e); } this.closeFtp(ftp); return in; } /** * ftpClient对象工厂方法 * * @param areaFlag 区域标记 目前不同的区域使用不同的FTP登陆账号 * @return */ private FTPClient ftpFactory(String areaFlag) { FTPClient ftp = new FTPClient(); if (null != ftpConfig.getProperty("ftp.controlkeepalivetimeout")) { ftp.setControlKeepAliveTimeout(Long.valueOf(ftpConfig.getProperty("ftp.controlkeepalivetimeout"))); } try { //ftp服务器地址 ftp.connect(ftpConfig.getProperty("ftp.server")); int reply = ftp.getReplyCode(); //检查连接是否正常 if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); logger.error("FTP服务器拒绝连接!"); } //登陆 if (!ftp.login(getAccountInfoByFlag(areaFlag, "username"), this.getAccountInfoByFlag(areaFlag, "password"))) { ftp.logout(); } else { //二进制传输 ftp.setFileType(FTP.BINARY_FILE_TYPE); } } catch (Exception e) { logger.error("创建ftpClient对象失败!", e); } return ftp; } private void closeFtp(FTPClient ftp) { try { ftp.noop(); ftp.logout(); } catch (IOException e) { logger.error("ftpClient登出失败!", e); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException f) { logger.error("ftp连接关闭失败!", f); } } } } /** * 获取账号信息 * * @param areaFlag 区域缩写 * @param suffix properties后缀 * @return 返回账号信息 */ private String getAccountInfoByFlag(String areaFlag, String suffix) { //默认情况key值 String key = "ftp." + suffix; if (null != areaFlag && !"".equals(areaFlag)) { key = "ftp." + areaFlag + "_" + suffix; } return ftpConfig.getProperty(key); } // public static void main(String[] args) // { // FTPHandler tmp = FTPHandler.getInstance(); // // try // { // System.out.println(IOUtils.toString(tmp.getInputStream("11", "jQuery_Backup.txt"))); // } // catch (IOException e) // { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } }
配置文件
################################################
#Connection Configuration
ftp.server=IP地址
ftp.controlkeepalivetimeout=300
#Account Configuration
ftp.11_username=123
ftp.11_password=123
ftp.33_username=456
ftp.33_password=456
相关推荐
NULL 博文链接:https://log-cd.iteye.com/blog/1187753
ftp上传下载系统客户端,Java实现,根据ftp协议,通过ip地址访问
FtpList部分是用来显示FTP服务器上的文件;...以下是这三部分的JAVA源程序: (1)显示FTP服务器上的文件 void ftpList_actionPerformed(ActionEvent e) { String server=serverEdit.getText(); //输入的FTP服务器的IP地址
用户java访问ftp的包,非常好用,给大家共享啊
1.客户端通过Windows的命令行访问FTP服务器。 2.FTP服务器可以并发地服务多个客户。 3.至少实现对FTP命令user、pass、dir、get的支持。即用户注册、显示服务器端的文件列表、下载文件等。(补充了上传文件,同时处理...
java实现FTP服务器_docx
本示例简单的实现了一个用Java代码来访问FTP,根据指定FTP的目录,访问这个路径下面的Ftp的文件,取出这个目录下面所有文件的文件名保存到一个Map中,最后根据系统时间和文件生成时间做对比,得出该日是否正确生成...
在网上找了好久没有现成的ftp连接池jar包,自己花了一些时间实现了一个简单的连接池,用了一段时间稳定性还可以。
java实现ftp论文 FTP客户端的设计与实现 摘要 FTP 是File Transfer Protocol(文件传输协议)的英文简称。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器...
用java编写的FTP服务器、客户端。服务器底层采用apache FTPserver的JAR包。客户端底层采用sun.net包。两者都可以独立使用。在myeclipse10.6里面编写,java版本是1.6。
这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...
JAVA 搭建FTP图片服务器的方法 服务器搭建方法在类注释里面 文件包括:JAVA端用于访问FTP服务器的方法不需要本地存储图片。文件附带2个所需jar包-commons-net.jar org.springframework.web.jar
转;Domino_java代理实现FTP上传下载
java ftpserver sshsclient 先登录再远程访问ftp
java实现访问ftp服务器 显示所有文件列表
在JAVA应用程序中如何实现FTP的功能
看了很多大神的博客,自己改造了下,终于做出了可以在线预览远程FTP服务器上的PDF文件的功能。大概花了1天时间,遇到很多坑。所以总结下,写了个文档,很详细,一步一步来就行了
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地...
1.客户端通过Windows的命令行访问FTP服务器。2.FTP服务器可以并发地服务多个客户。 3.至少实现对FTP命令user、pass、dir、get的支持。即用户注册、显示服务器端的文件列表、下载文件等。4.FTP服务器必须对出现的问题...
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时...