`
rantim
  • 浏览: 19256 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

apache common-net 学习笔记

    博客分类:
  • ftp
阅读更多
相关下载:
commons-net down:http://commons.apache.org/net/download.html

公司提出需要通过ftp上传下载文件,总结一下(备忘)

package cn.xt.net.ftp;

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 java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.junit.Test;

public class Ftpclient {
	
	final static String PATH="d:/zhanghuadong/";
	final static String SERVICE_ADDRESS="192.168.0.115";
	final static String USER="ftpuser";
	final static String PASSWORD="ftpuser";
	final static String DOWN_FILE_NAME="XF200070750845720090218";
	/**
	 * Ftp下载
	 *
	 */
	@Test
	public void ftpQuery(){
		FTPClient client=new FTPClient();
		try {
			client.connect(SERVICE_ADDRESS);
			boolean islogon=client.login(USER, PASSWORD);
			FTPFile[] files=null;
			if(islogon){
				int reply=client.getReplyCode();
				/**判断返回代码 */
				if(!FTPReply.isPositiveCompletion(reply)){
					throw new Exception("对不起,"+SERVICE_ADDRESS+" user:"+USER+" password:"+PASSWORD+" 连接出错!");
				}
				/**更改下载的目录 */
				client.changeWorkingDirectory("qyyd_fsend/");
				files=client.listFiles();
				File file=null;
				for (int i = 0; i < files.length; i++) {
					System.out.println(files[i].getName());
					if(files[i].getName().equals("XF200070750845720090218")){
						System.out.println("down...");
						file=new File(PATH+files[i].getName());
					}
				}
				if(file!=null){
					OutputStream out=new FileOutputStream(file);
					client.retrieveFile("XF200070750845720090218", out);
					System.out.println("down success...");
					out.close();
				}
				System.out.println("logon 成功!");
			}
			client.logout();
			client.disconnect();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void ftpUpload(){
		FTPClient ftp=new FTPClient();
		InputStream stream=null;
		try{
			//ftp.setDefaultPort(221);
			ftp.connect(SERVICE_ADDRESS);
			boolean islogon=ftp.login(USER, PASSWORD);
			if(islogon){
				int recode=ftp.getReplyCode();
				if(!FTPReply.isPositiveCompletion(recode)){
					throw new Exception("对不起,"+SERVICE_ADDRESS+" user:"+USER+" password:"+PASSWORD+" 连接出错!");
				}
				stream=new FileInputStream(new File(PATH+DOWN_FILE_NAME));
				FTPFile[] files=ftp.listFiles();
				int overname=0;
				for (int i = 0; i < files.length; i++) {
					if(files[i].getName().indexOf(DOWN_FILE_NAME)!=-1){
						overname++;
					}
				}
				if(overname>0){
					ftp.rename(DOWN_FILE_NAME, DOWN_FILE_NAME+"."+overname);
				}
				//设置文件类型 文本类型 二进制文件 区别文本会根据系统加换行符  二进制则不会
				ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
				boolean isstore=ftp.storeFile(DOWN_FILE_NAME,stream);
				stream.close();
				if(!isstore){
					System.out.println("upload fail ...");
				}
				System.out.println("upload  success...");
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				ftp.logout();
				ftp.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args){
		Ftpclient client=new Ftpclient();
		client.ftpUpload();
	}
}
分享到:
评论

相关推荐

    Apache commons-pool2-2.4.2源码学习笔记

    在本文中,我们将深入探讨这个库的核心概念、设计模式以及如何通过源码学习来理解其工作原理。 首先,Apache Commons Pool2提供了一个`ObjectPool`接口,它是整个对象池的核心。这个接口定义了获取、返回对象、验证...

    Linux_5.4_RHCE_Apache高级配置_学习笔记

    【Linux 5.4 RHCE Apache 高级配置学习笔记】 在Linux 5.4的环境中,Red Hat Certified Engineer (RHCE) 认证需要掌握Apache服务器的高级配置技巧。本学习笔记旨在帮助读者深入理解如何高效管理和优化Apache服务器...

    Apache Web服务器配置与使用工作笔记

    ### Apache Web服务器配置与使用工作笔记 #### 一、Apache Web服务器简介 Apache HTTP Server(简称Apache)是一款开放源码的Web服务运行平台,在互联网上有着广泛的使用。它是由Apache软件基金会的一个开源项目...

    struts2学习笔记(1)

    ### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...

    elasticsearch-analysis-dynamic-synonym-7.12.1.zip

    "欢迎大家学习交流"表明作者鼓励社区成员共享知识,共同探讨和改进这个插件。 标签 "elasticsearch elasticsearch" 强调了这个资源与Elasticsearch紧密相关,涵盖了Elasticsearch的核心技术和应用。 从压缩包内的...

    韩顺平linux教程资料

    apache-tomcat-5.5.33.tar.gz、apache-tomcat-6.0.35.tar.gz、linux 命令手册.chm、mysql-connector-java-5.1.6-bin.jar、mysql-standard-4.0.26-pc-linux-gnu-i686.tar.gz、samba-2.2.7a-7.9.0.i386.rpm、samba-...

    Hadoop学习笔记.pdf

    Hadoop是一种开源的分布式存储和计算系统,它由Apache软件基金会开发。在初学者的角度,理解Hadoop的组成部分以及其架构设计是学习Hadoop的基础。 首先,Hadoop的分布式文件系统(HDFS)是其核心组件之一,它具有高...

    php入门到精通学习笔记

    【PHP入门到精通学习笔记】 PHP(Personal Home Page)是一种广泛使用的开源脚本语言,尤其在Web开发领域中。PHP最初是由Rasmus Lerdorf创建的,后来由Zend公司负责维护和商业化。PHP的设计目标是使得编写过程更...

    LDAP学习笔记相关资料

    LDAP学习笔记 LDAP,全称为轻量级目录访问协议,是一种用于访问和管理分布式目录服务的网络协议。它源于X.500标准,但在设计上更为轻便且可定制,支持TCP/IP通信,这对于互联网访问至关重要。目录服务主要用于快速...

    tomcat学习精华笔记

    【Tomcat 学习精华笔记】 Tomcat 是一个广泛应用的开源服务器,主要用于托管Java Web应用程序。它虽然不是严格意义上的应用服务器,但作为一个Servlet容器,它能够处理Servlet和JSP,并且具备了一些应用服务器的...

    struts学习的一点笔记

    在深入探讨Struts框架的学习笔记之前,我们先简要回顾一下Struts框架的基本概念与重要性。Struts是一个开源的MVC(Model-View-Controller)框架,主要用于简化Java Web应用的开发。它提供了一套标准的方式来组织和...

    韩顺平php笔记

    1. **CGI**(Common Gateway Interface):早期的动态网页技术,将Web服务器和应用程序之间建立桥梁。 2. **ASP**:微软推出的Web开发技术,后来发展为ASP.NET。 3. **JSP**:基于Java的动态网页技术,最初由Sun ...

    Java分布式应用学习笔记01分布式Java应用和SOA

    2. **CORBA(Common Object Request Broker Architecture)**:通用对象请求代理架构,用于实现分布式对象之间的交互。 3. **RMI(Remote Method Invocation)**:Java RMI允许对象通过网络调用另一个对象的方法,...

    最全韩顺平php入门到精通全套笔记

    - **CGI (Common Gateway Interface)**:最早的动态网页技术之一,但因其配置复杂而逐渐被其他技术取代。 - **ASP (Active Server Pages)**:由微软开发,后来演进为ASP.NET。 - **JSP (JavaServer Pages)**:最初由...

    PHP 韩顺平课程笔记

    1. CGI(Common Gateway Interface,通用网关接口):早期的动态网页技术,用于连接Web服务器和各种编程语言。 2. ASP(Active Server Pages,活动服务器页面):微软的产品,后来发展为ASP.NET。 3. JSP(Java...

    hadoop笔记2.pdf

    Apache版本是最初的开源版本,适用于学习。Cloudera成立于2008年,是最早将Hadoop商用化的公司之一,提供了CDH、Cloudera Manager和Cloudera Support等产品。Hortonworks成立于2011年,其主打产品为Hortonworks Data...

    【免费】ThinkPHP3.1.2经典笔记

    ### ThinkPHP3.1.2经典笔记知识点详解 #### 一、ThinkPHP 框架简介 ##### 1.1 ThinkPHP 概述 - **ThinkPHP** 是一个开源的 PHP 开发框架,旨在简化 Web 应用程序的开发过程。它采用 MVC (Model-View-Controller) ...

Global site tag (gtag.js) - Google Analytics