文档章节

java 操作FTP类

sky_hebiao
 sky_hebiao
发布于 2016/12/07 10:22
字数 855
阅读 27
收藏 1
package com.clpc.core.util;

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 org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

/**
 * ftp 服务控制
 * @author 何彪
 *
 */
public class ControlFTPUtil {

	 /**
	 * 上传文件(可供Action/Controller层使用)
	 * @param hostname FTP服务器地址
	 * @param port FTP服务器端口号
	 * @param username FTP登录帐号
	 * @param password FTP登录密码
	 * @param pathname FTP服务器保存目录
	 * @param fileName 上传到FTP服务器后的文件名称
	 * @param inputStream 输入文件流
	 * @return
	 */
	public static boolean uploadFile(String hostname, int port,
			String username, String password, String pathname, String fileName,
			InputStream inputStream) {
		boolean flag = false;
		FTPClient ftpClient = new FTPClient();
		ftpClient.setControlEncoding("UTF-8");
		try {
			// 连接FTP服务器
			ftpClient.connect(hostname, port);
			// 登录FTP服务器
			ftpClient.login(username, password);
			// 是否成功登录FTP服务器
			int replyCode = ftpClient.getReplyCode();
			if (!FTPReply.isPositiveCompletion(replyCode)) {
				System.out.println("连接失败,错误信息:"+ftpClient.getReplyString());
				AndyLogger.log("clpccc_MapReduce", "连接失败,错误信息:"+ftpClient.getReplyString());
				return flag;
			}

			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			ftpClient.makeDirectory(pathname);
			ftpClient.changeWorkingDirectory(pathname);
			ftpClient.storeFile(fileName, inputStream);
			inputStream.close();
			ftpClient.logout();
			flag = true;
			AndyLogger.log("clpccc_MapReduce", "上传FTP文件:"+fileName);
			System.out.println("上传FTP文件成功:"+fileName);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (ftpClient.isConnected()) {
				try {
					ftpClient.disconnect();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return flag;
	}
	
	 /**
	 * 上传文件(可对文件进行重命名)
	 * @param hostname FTP服务器地址
	 * @param port FTP服务器端口号
	 * @param username FTP登录帐号
	 * @param password FTP登录密码
	 * @param pathname FTP服务器保存目录
	 * @param filename 上传到FTP服务器后的文件名称
	 * @param originfilename 待上传文件的名称(绝对地址)
	 * @return
	 */
	 public static boolean uploadFileFromProduction(String hostname, int port, String username,
			 String password, String pathname, String filename, String originfilename){
		 boolean flag = false;
		 try {
			 InputStream inputStream = new FileInputStream(new File(originfilename));
			 flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream); 
		 } catch (Exception e) {
			 e.printStackTrace();
		 }
		 return flag;
	 }
	  
	 /**
	 * 上传文件(不可以进行文件的重命名操作)
	 * @param hostname FTP服务器地址
	 * @param port FTP服务器端口号
	 * @param username FTP登录帐号
	 * @param password FTP登录密码
	 * @param pathname FTP服务器保存目录
	 * @param originfilename 待上传文件的名称(绝对地址)
	 * @return
	 */
	 public static boolean uploadFileFromProduction(String hostname, int port, 
			 String username, String password, String pathname, String originfilename){
		 boolean flag = false;
		 try {
			 String fileName = new File(originfilename).getName();
			 InputStream inputStream = new FileInputStream(new File(originfilename));
			 flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream); 
		 } catch (Exception e) {
			 e.printStackTrace();
		 }
		 return flag;
	 }
	  
	  
	 /**
	 * 删除文件
	 * @param hostname FTP服务器地址
	 * @param port FTP服务器端口号
	 * @param username FTP登录帐号
	 * @param password FTP登录密码
	 * @param pathname FTP服务器保存目录
	 * @param filename 要删除的文件名称
	 * @return
	 */
	 public static boolean deleteFile(String hostname, int port, String username, 
			 String password, String pathname, String filename){
		 boolean flag = false;
		 FTPClient ftpClient = new FTPClient();
		 try {
			 //连接FTP服务器
			 ftpClient.connect(hostname, port);
			 //登录FTP服务器
			 ftpClient.login(username, password);
			 //验证FTP服务器是否登录成功
			 int replyCode = ftpClient.getReplyCode();
			 if(!FTPReply.isPositiveCompletion(replyCode)){
				 return flag;
			 }
			 //切换FTP目录
			 ftpClient.changeWorkingDirectory(pathname);
			 ftpClient.dele(filename);
			 ftpClient.logout();
			 flag = true;
		 } catch (Exception e) {
			 e.printStackTrace();
		 } finally{
			 if(ftpClient.isConnected()){
				 try {
					 ftpClient.logout();
				 } catch (IOException e) {
				 }
			 }
		 }
		 return flag;
	 }
	  
	 /**
	 * 下载文件
	 * @param hostname FTP服务器地址
	 * @param port FTP服务器端口号
	 * @param username FTP登录帐号
	 * @param password FTP登录密码
	 * @param pathname FTP服务器文件目录
	 * @param filename 文件名称
	 * @param localpath 下载后的文件路径
	 * @return
	 */
	 public static boolean downloadFile(String hostname, int port, String username, String password, 
			 String pathname, String filename, String localpath){
		 boolean flag = false;
		 FTPClient ftpClient = new FTPClient();
		 try {
			 //连接FTP服务器
			 ftpClient.connect(hostname, port);
			 //登录FTP服务器
			 ftpClient.login(username, password);
			 //验证FTP服务器是否登录成功
			 int replyCode = ftpClient.getReplyCode();
			 if(!FTPReply.isPositiveCompletion(replyCode)){
				 return flag;
			 }
			 //切换FTP目录
			 ftpClient.changeWorkingDirectory(pathname);
			 FTPFile[] ftpFiles = ftpClient.listFiles();
			 for(FTPFile file : ftpFiles){
				 if(filename.equalsIgnoreCase(file.getName())){
					 File localFile = new File(localpath + "/" + file.getName());
					 OutputStream os = new FileOutputStream(localFile);
					 ftpClient.retrieveFile(file.getName(), os);
					 os.close();
				 }
			 }
			 ftpClient.logout();
			 flag = true;
		 } catch (Exception e) {
			 e.printStackTrace();
		 } finally{
			 if(ftpClient.isConnected()){
				 try {
					 ftpClient.logout();
				 } catch (IOException e) {
				 }
			 }
		 }
		 return flag;
	 	}
	 
	 public static void main(String[] args) {
		 ControlFTPUtil ftpUtil= new ControlFTPUtil();
		 String hostname = "9.1.23.65";
		 int port = 21;
		 String username = "admin";
		 String password = "clpccc";
		 String pathname = "/callcenterMT/10/SND/000002"; 
		 String originfilename = "D:/callcenter/10/SND/000002/10000002#20161114135931.DAT";
		 ftpUtil.uploadFileFromProduction(hostname, port, username, password, pathname, originfilename);
	}
}

 

© 著作权归作者所有

共有 人打赏支持
sky_hebiao
粉丝 0
博文 7
码字总数 4148
作品 0
大兴
后端工程师
java的System.getProperty()方法可以获取的值

java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 ja...

cRaZy_JaZa
2013/10/16
0
0
libcurl在android下的移植、编译与测试以及java接口的封装

curl是利用URL语法在命令行方式下工作的文件传输工具 它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT...

zhoulc
2013/03/05
0
2
Apache commons ftp API 的Spike

由于公司给了我一个传FTP的任务,刚好可以学习一下,同时也进行了一些单元测试,spike了一把,哈哈。分享一下。 这里只对最简单常用的FtpClient的上传下载列表功能进行测试学习使用^-^ 创建一...

XzhiF
2013/12/13
0
9
Java使用SFTP和FTP两种连接方式实现对服务器的上传下载

一、Java实现对SFTP服务器的文件的上传下载 1、添加maven依赖: 2、SFTPUtils工具类: 二、Java实现对FTP服务器的文件的上传下载 有时系统可能要兼容ftp和sftp,而ftp的端口一般是21,sftp对...

灌南高手No1
09/12
0
0
深入理解JVM内幕:从基本结构到Java 7新特

摘要:许多没有深入理解JVM的开发者也开发出了很多非常好的应用和类库。不过,如果你更加理解JVM的话,你就会更加理解Java,这样你会有助于你处理类似于我们前面的案例中的问题。 每个Java开...

开源中国驻成都办事处
2012/12/06
0
1

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部