文档章节

java 操作FTP类

sky_hebiao
 sky_hebiao
发布于 2016/12/07 10:22
字数 855
阅读 38
收藏 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);
	}
}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: JDBC 单例实现类
下一篇: MD5加密类
sky_hebiao
粉丝 0
博文 7
码字总数 4148
作品 0
大兴
后端工程师
私信 提问
ftp4j 1.7 发布,Java的FTP客户的开发包

ftp4j 1.7 发布了,主要改进内容包括: 对 FTP 连接器架构的修改 FTPConnector 不再是个接口,改成了抽象类,实现了一些具有超时检测的连接 调用者可设置连接、读取和关闭操作的超时时间 提供...

红薯
2011/12/29
2.4K
0
linux上一个ftp用户删除另外一个用户创建的文件,删除失败

使用java编写的代码,一个ftp用户创建的文件,另外一个ftp用户来读取文件并删除,能正常读取,但是无法删除。ftp服务器是在Linux上安装的vsftpd,两个用户的umask值都通过用户环境变量修改一...

Howie_02
2016/05/13
382
1
Apache开源项目分类列表

分类 项目名 说明 开发语言 服务器 (共20) Apache HTTP Server 全球第一HTTP服务器 C/C++ Tomcat Java的Web服务器 Java James 邮件服务器 Java SpamAssassin 反垃圾邮件 C/C++ Perl Apach...

johnnyhg
2009/05/08
2.3K
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
Apache commons ftp API 的Spike

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

XzhiF
2013/12/13
0
9

没有更多内容

加载失败,请刷新页面

加载更多

Win10强制更新怎么关闭 彻底禁止Windows自动更新方

Win10强制更新怎么关闭 彻底禁止Windows自动更新方法 (全文) 百事数码原创 2018-07-06 17:39电脑百事网7843 + 关注 很多Win10用户来说经常会遇到这样的烦恼,电脑系统会不时的提醒自动更新,...

阿K1225
11分钟前
0
0
不用编写程序代码,送你一个爬虫程序批量采集猫眼电影票房数据

"大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取、管理和处理。 "大数据"首先是指数据体量(volumes)大,指代大型数据集,一般在1...

技术阿飞
26分钟前
0
0
【Flutter教程】从零构建电商应用(一)

在这个系列中,我们将学习如何使用google的移动开发框架flutter创建一个电商应用。本文是flutter框架系列教程的第一部分,将学习如何安装Flutter开发环境并创建第一个Flutter应用,并学习Flu...

笔阁
47分钟前
5
0
什么是以太坊DAO?(三)

Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念。一般翻译为去中心化的自治组织。 投票支付合约的所有费用和行动需要时间,并要求用户始终保持活跃,知情和专注。另一...

geek12345
49分钟前
2
0
一个本科学生对Linux的认知

一个本科学生对Linux的认知 我是一名大三的普通一本大学的软件工程的一名学生,学校开设了一些关于系统开发的课程,纸上得来终觉浅,学校的课程课时较短,想要在56个课时之内学会一些公司需要...

linuxCool
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部