`
yangsj19870829
  • 浏览: 40859 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java访问FTP

 
阅读更多

 

    这里只提供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

    

    

分享到:
评论

相关推荐

    java访问FtpSever

    NULL 博文链接:https://log-cd.iteye.com/blog/1187753

    ftp客户端11.rar_JAVA访问 FTP_ftp客户端_ftp客户端 java_java ftp客户端_java 上传下载

    ftp上传下载系统客户端,Java实现,根据ftp协议,通过ip地址访问

    java实现的远程ftp文件浏览

    FtpList部分是用来显示FTP服务器上的文件;...以下是这三部分的JAVA源程序: (1)显示FTP服务器上的文件 void ftpList_actionPerformed(ActionEvent e) { String server=serverEdit.getText(); //输入的FTP服务器的IP地址

    java好用的ftp包

    用户java访问ftp的包,非常好用,给大家共享啊

    java搭建ftp服务器

    1.客户端通过Windows的命令行访问FTP服务器。 2.FTP服务器可以并发地服务多个客户。 3.至少实现对FTP命令user、pass、dir、get的支持。即用户注册、显示服务器端的文件列表、下载文件等。(补充了上传文件,同时处理...

    java实现FTP服务器_docx

    java实现FTP服务器_docx

    Java检测指定FTP目录下的文件名

    本示例简单的实现了一个用Java代码来访问FTP,根据指定FTP的目录,访问这个路径下面的Ftp的文件,取出这个目录下面所有文件的文件名保存到一个Map中,最后根据系统时间和文件生成时间做对比,得出该日是否正确生成...

    java ftp连接池

    在网上找了好久没有现成的ftp连接池jar包,自己花了一些时间实现了一个简单的连接池,用了一段时间稳定性还可以。

    JAVA实现ftp

    java实现ftp论文 FTP客户端的设计与实现 摘要 FTP 是File Transfer Protocol(文件传输协议)的英文简称。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器...

    JAVA编写的FTP客户端和服务器

    用java编写的FTP服务器、客户端。服务器底层采用apache FTPserver的JAR包。客户端底层采用sun.net包。两者都可以独立使用。在myeclipse10.6里面编写,java版本是1.6。

    使用java实现的linux和ftp服务器文件上传下载工具

    这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...

    JAVA FTP图片服务器的工具类和所需jar包

    JAVA 搭建FTP图片服务器的方法 服务器搭建方法在类注释里面 文件包括:JAVA端用于访问FTP服务器的方法不需要本地存储图片。文件附带2个所需jar包-commons-net.jar org.springframework.web.jar

    Domino_java代理实现FTP上传下载

    转;Domino_java代理实现FTP上传下载

    先登录再远程访问ftp

    java ftpserver sshsclient 先登录再远程访问ftp

    java实现访问ftp服务器 显示所有文件列表

    java实现访问ftp服务器 显示所有文件列表

    在JAVA应用程序中如何实现FTP的功能

    在JAVA应用程序中如何实现FTP的功能

    pdf.js在java web项目中远程预览ftp上的pdf文件.docx

    看了很多大神的博客,自己改造了下,终于做出了可以在线预览远程FTP服务器上的PDF文件的功能。大概花了1天时间,遇到很多坑。所以总结下,写了个文档,很详细,一步一步来就行了

    FTPserver文件服务器

    FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地...

    基于Java实现FTP服务器【100012631】

    1.客户端通过Windows的命令行访问FTP服务器。2.FTP服务器可以并发地服务多个客户。 3.至少实现对FTP命令user、pass、dir、get的支持。即用户注册、显示服务器端的文件列表、下载文件等。4.FTP服务器必须对出现的问题...

    ftpDemo.rar

    其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时...

Global site tag (gtag.js) - Google Analytics