`

Apache FTP操作

    博客分类:
  • demo
 
阅读更多

pom:

<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.0.1</version>
		</dependency>
		
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.0.1</version>
		</dependency>
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>

 FtpConManager:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

/**
 *FTP 管理
 *<br>使用简单工厂方法
 *
 */
public class FtpConManager {
	private FtpConManager(){}
	private static FtpConManager instance;
	private FTPClient ftpClient =null;
	
	/**
	 * 获取实例
	 * get FtpConManager
	 * @return FtpConManager
	 */
	public synchronized static FtpConManager getInstance(){
		if( instance == null ){
			instance = new FtpConManager();
		}
		return instance;
	}

	
	/**
	 * <p>ftp登录</p>
	 * @param s_url ftp IP地址
	 * @param uname 用户名
	 * @param pass  密码
	 */
	public void login(String hostIP,String username,String password){
		ftpClient = new FTPClient();
		try{
			//连接
			ftpClient.connect(hostIP);
			ftpClient.login(username,password);
			//检测连接是否成功
			int reply = ftpClient.getReplyCode();
			if(!FTPReply.isPositiveCompletion(reply)) {
				this.closeCon();
				System.out.println("FTP 连接失败!");
				System.exit(1);
			}else{
				System.out.println("FTP 连接成功!");
			}
			
		}catch(Exception ex){
			ex.printStackTrace();
			//关闭
			this.closeCon();
		}
	}
	
	/**
	 * 上传文件
	 * @param localFilePath 本地路径及名字
	 * @param newFileName FTP上的路径及名字
	 * @return
	 */
	public  boolean uploadFile(String localPathAndName,String fptPathAndName){
		boolean flag = false ;
		if( ftpClient!=null ){
	       BufferedInputStream buffIn=null;
	      try{
	            buffIn=new BufferedInputStream(new FileInputStream(localPathAndName));
	            flag = ftpClient.storeFile(fptPathAndName, buffIn);
	        }catch(Exception e){
	            e.printStackTrace();
	        }finally{
	           try{
	               if(buffIn!=null)
	                    buffIn.close();
	            }catch(Exception e){
	                e.printStackTrace();
	            }
	        }
      }
      return flag ;
    }

	/**
	 * 下载文件
	 * @param remoteFileName  FTP上的路径及名字
	 * @param localFileName 本地路径及名字
	 */
	public  boolean downloadFile(String remotePathAndName,String localPathAndName){
		boolean flag = false ;
		if( ftpClient!=null ){
       BufferedOutputStream buffOut=null;
       try{
            buffOut=new BufferedOutputStream(new FileOutputStream(localPathAndName));
            flag = ftpClient.retrieveFile(remotePathAndName, buffOut);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
           try{
               if(buffOut!=null)
                    buffOut.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
		}
		return flag ;
    }

	
	
	/**
	 * 
	 * <p>删除ftp上的文件</p>
	 * @param srcFname
	 * @return true || false
	 */
	public boolean removeFile(String srcFname){
		boolean flag = false;
		if( ftpClient!=null ){
			try {
				flag = ftpClient.deleteFile(srcFname);
			} catch (IOException e) {
				e.printStackTrace();
				this.closeCon();
			}
		}
		return flag;
	}
	
	/**
	 *<p>销毁ftp连接</p> 
	 */
	public void closeCon(){
		if(ftpClient !=null){
			if(ftpClient.isConnected()){
				try {
					ftpClient.logout();
					ftpClient.disconnect();
				} catch (IOException e) {
					e.printStackTrace();
				} 
			}
		}
	}
}

 FtpNetTest:

public class FtpNetTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FtpConManager.getInstance().login("xxx.xxx.xxx.xxx", "xxx", "xxx");
//		boolean flag = FtpConManager.getInstance().uploadFile("i:/4/dog.txt", "dog.txt");
		boolean flag =FtpConManager.getInstance().uploadFile("i:/4/dog.txt", "xx/dog.txt");
//		boolean flag =FtpConManager.getInstance().loadFile("20150626/dog.txt", "i:/4/dog2.txt") ;
//		boolean flag = FtpConManager.getInstance().removeFile("aa/a.txt");
		System.out.println("操作结果:"+flag);
		FtpConManager.getInstance().closeCon();

	}

}

 注:如果发现上传时创建文件夹而无法写入的情况,请不要慌,关闭防火墙就可以了

分享到:
评论

相关推荐

    apache FTPserver 安装包

    4. **多平台支持**:Apache FTPServer可以在多种操作系统上运行,包括Windows、Linux、Unix等。 5. **强大的配置能力**:通过XML配置文件,管理员可以精细地控制FTP服务器的行为,例如设置用户权限、限制速度、配置...

    Apache FTPServer的配置使用

    Apache FTPServer:Apache 软件基金会开发的一款 FTP 服务器,支持多种操作系统,功能强大、灵活。 FileZilla Server:一个免费的 FTP 服务器,支持多种操作系统,易于使用。 VSFTP:一个安全、稳定的 FTP 服务器...

    apache ftpserver笔记

    这个库提供了丰富的API,支持基本的FTP操作,如连接、登录、上传、下载、删除文件,以及断点续传和处理中文文件名的功能。断点续传在大文件传输中尤为重要,它可以避免因网络问题中断传输后从头开始。实现断点续传的...

    Apache Ftpserver 全套

    你可以查看并学习如何实现FTP协议,如何处理用户认证,以及如何处理文件上传和下载等操作。 在深入研究Apache Ftpserver时,你还需要了解以下关键概念: 1. **模块化设计**:Apache Ftpserver的模块化结构允许你...

    apache ftp工具所需jar

    使用这些JAR文件,开发者可以构建一个功能齐全的FTP客户端,能够方便地执行各种FTP操作。例如,通过`commons-net-1.4.1.jar`中的`FTPClient`对象,可以建立与FTP服务器的连接,然后使用`login()`方法登录,`change...

    apache ftpserver讲解

    例如,对于 Apache FTP Server 1.0.5 版本,可以根据不同的操作系统选择对应的安装包。 2. **安装** - **Linux/Unix系统**:使用命令 `tar -xzvf ftpserver-1.0.5.tar.gz` 进行解压安装。 - **Windows系统**:...

    Apache Ftp Server使用说明

    Apache Ftp Server是一款开源的FTP服务器软件,基于Java平台,由Apache软件基金会开发。它提供了高度可配置性和灵活性,使得用户可以根据自身需求定制FTP服务。本文将深入探讨Apache Ftp Server的使用方法,包括安装...

    (转)Java使用Apache FtpServer实现嵌入式FTP服务器

    这个库提供了FTP客户端功能,允许Java程序连接到FTP服务器,执行上传、下载、列表文件等操作。它的使用方式与Apache FtpServer类似,需要添加依赖并调用相应的API方法。 总结起来,Apache FtpServer是Java开发人员...

    apache ftpserver使用讲解

    启动Apache FTP Server的方法因操作系统而异: - **Linux**: ```bash cd %FTP_HOME% bin/ftpd.sh res/conf/ftpd-full.xml ``` - **Windows**: ```bash cd %FTP_HOME% bin/ftpd.bat res/conf/ftpd-full.xml ...

    apache ftp server

    Apache FTP Server是一个开源的FTP服务器,它允许用户通过FTP协议上传、下载文件。这个服务器是用Java语言编写的,因此可以在任何支持Java的平台上运行,包括Windows、Linux、Unix等操作系统。Apache FTP Server的...

    apache-ftpserver-1.1.1.zip

    这个特定的压缩包“apache-ftpserver-1.1.1.zip”包含了该服务器软件的v1.1.1版本,适用于Linux和Windows操作系统。FTP服务器的主要作用是为用户提供一个安全、可靠的文件上传和下载服务。 Apache FTPServer的特性...

    apache ftpserver

    Apache FTPServer是一个开源的FTP服务器项目,它提供了一个强大、灵活且可扩展的平台来管理文件传输服务。这个服务器是基于Java实现的,因此具备跨平台性,可以在多种操作系统上运行,包括Windows、Linux和Mac OS等...

    apache_ftp 开发包

    然后,可以通过Apache Commons Net提供的`FTPClient`和`FTPSClient`类来创建FTP客户端,实现文件上传、下载、删除等操作。对于服务器端,可以利用FTPServer API来配置和启动FTP服务,设置用户权限,以及处理客户端...

    Java 嵌入apache.ftpserver.FtpServer 实现FTP服务

    Java中的Apache FtpServer库为开发人员提供了一个强大的框架,用于在Java应用程序中轻松地创建和管理FTP服务器。Apache FtpServer提供了丰富的API,可以定制服务器的行为,满足各种需求。本篇文章将深入探讨如何利用...

    ApacheFTP开源工具

    Apache FTP工具库提供了丰富的API,支持基本的FTP操作,如连接、断开、登录、列出目录内容、上传文件、下载文件、创建删除目录等。此外,它还支持更高级的功能,如被动模式、主动模式、二进制或文本模式的文件传输,...

    apache-ftpserver-1.0.6

    Apache FTPServer是一个开源的FTP服务器项目,源自Apache MINA项目,提供了一种高效且可扩展的方式来实现FTP(文件传输协议)服务。这个"apache-ftpserver-1.0.6"版本是该软件的一个特定发布版,包含了在该版本中所...

    Apache FTPClient操作FTP工具类

    Apache FTPClient操作FTP工具类

    apache FTP 工具类

    总结,Apache Commons Net的FTP工具类为Java开发者提供了便利的FTP操作接口,可以轻松地进行文件传输和目录管理。通过阅读`FtpUtil.java`和`FtpConfig.java`源码,我们可以了解如何在实际项目中利用这些功能来实现...

    ApacheCamel-FTP

    Apache Camel 提供了 FTP 组件,使得在 Camel 路由中集成 FTP 功能变得简单高效。 在 Apache Camel 的 FTP 组件中,你可以实现以下功能: 1. **连接到 FTP 服务器**:通过配置 FTP 客户端参数,如主机名、端口、...

Global site tag (gtag.js) - Google Analytics