FTP 文件操场 FTPClient

工作中需要实现对远程FTP文件的各种操作,简单写了个静态FTP操作工具类,以下源码供大家参考:

public class FtpUtil {

private static FTPClient ftpClient = new FTPClient();

private static String encoding = System.getProperty("file.encoding");

private static String defaultPath;

/**

* FTP初始化连接

*/

public static boolean connect(String host,Integer port,String userName,String password) throws IOException{

return connect(host,port,userName,password,null);

}

/**

* FTP初始化连接

*/

public static boolean connect(String host,Integer port,String userName,String password,String remotePath) throws IOException{

boolean result=false;

try {

ftpClient.connect(host,port);

// 登录

ftpClient.login(userName, password);

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

// 检验是否连接成功

int reply = ftpClient.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {//连接失败

ftpClient.disconnect();

result =false;

}else{//如果连接成功

result = true;

if(remotePath != null){

defaultPath = remotePath;

result =ftpClient.changeWorkingDirectory(new String(remotePath.getBytes(encoding),"iso-8859-1"));

if(result == false){

System.err.println("ftp changeWorkingDirectory to ".concat(remotePath).concat(" error"));

}

}

System.out.println("ftp connect successfully.");

}

} catch (SocketException e) {

System.err.println("ftp connect failed: " + e.getMessage());

throw e;

} catch (IOException e) {

System.err.println("ftp connect failed: " + e.getMessage());

throw e;

}

return result;

}

/**

* FTP是否连接

*/

public static boolean isConnected(){

return ftpClient.isConnected();

}

/**

* 上传文件

*/

public static boolean uploadFile(String filename, InputStream input) throws IOException {

return uploadFile(null,filename,input);

}

/**

* 上传文件

*/

public static boolean uploadFile(String remotePath, String filename, InputStream input) throws IOException {

boolean result = false;

if (!ftpClient.isConnected()) {

System.err.println("ftp uploadfile error : no ftpserver is connected");

return false;

}

try {

// 转移工作目录至指定目录下

if(remotePath != null){

ftpClient.changeWorkingDirectory(new String(remotePath.getBytes(encoding),"iso-8859-1"));

}

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

result = ftpClient.storeFile(new String(filename.getBytes(encoding),"iso-8859-1"), input);

} catch (IOException e) {

System.err.println("ftp uploadfile error : "+e.getMessage());

throw e;

} finally {

try {

if (input != null) {

input.close();

}

} catch (IOException e) {

System.err.println("ftp uploadfile close error : "+e.getMessage());

throw e;

}

}

System.out.println("ftp uploadfile successfully.");

return result;

}

/**

* 下载FTP文件

*/

public static boolean downFile(String fileName, String localPath) throws IOException {

return downFile(null,fileName,localPath);

}

/**

* 下载FTP文件

*/

public static boolean downFile( String remotePath, String fileName, String localPath) throws IOException {

boolean result = false;

if (!ftpClient.isConnected()) {

System.err.println("ftp download file error : no ftpserver is connected");

return false;

}

try {

// 转移工作目录至指定目录下

if(remotePath != null){

ftpClient.changeWorkingDirectory(new String(remotePath.getBytes(encoding),"iso-8859-1"));

}

System.out.println("ftp start download file :" + fileName);

// 获取文件列表

FTPFile[] fs = ftpClient.listFiles();

for (FTPFile ff : fs) {

if(fileName != null && !fileName.equals(ff.getName())){

continue;

}

File localFile = new File(localPath + "/" + ff.getName());

OutputStream os = new FileOutputStream(localFile);

ftpClient.retrieveFile(ff.getName(), os);

os.close();

System.out.println("ftp download file finished :"+ff.getName());

result = true;

}

if(result == false){

System.err.println("ftp download error cannot find file : " + fileName);

}

} catch (IOException e) {

System.err.println("ftp download error : "+e.getMessage());

throw e;

}

return result;

}

/**

* 关闭当前连接

*/

public static void close(){

try {

ftpClient.logout();

ftpClient.disconnect();

} catch (IOException e) {

System.err.println("ftp ftpserver close error : "+e.getMessage());

}

}

/**

* 返回连接默认路径

*/

public static void cdRoot() throws Exception{

try {

if (!ftpClient.isConnected()) {

System.err.println("ftp cd root error : no ftpserver is connected");

}

ftpClient.changeWorkingDirectory(new String("/".getBytes(encoding),"iso-8859-1"));

if(defaultPath != null){

ftpClient.changeWorkingDirectory(new String(defaultPath.getBytes(encoding),"iso-8859-1"));

}

} catch (Exception e) {

System.err.println("ftp change directory to defaultpath error : "+e.getMessage());

throw e;

}

}

/**

* 工作路径切换

*/

public static void cd(String path) throws Exception{

try {

if (!ftpClient.isConnected()) {

System.err.println(" ftp cd " + path + " : no ftpserver is connected");

}

ftpClient.changeWorkingDirectory(new String(path.getBytes(encoding),"iso-8859-1"));

} catch (Exception e) {

System.err.println("ftp cd ‘" + path + "‘ error : "+e.getMessage());

throw e;

}

}

/**

* 创建工作路径

*/

public static void mkdir(String path) throws IOException{

try {

if (!ftpClient.isConnected()) {

System.err.println("ftp mkdir error : no ftpserver is connected");

}

ftpClient.makeDirectory(path);

} catch (IOException e) {

System.err.println("ftp mkdir ‘" + path + "‘ error : "+e.getMessage());

throw e;

}

}

/**

* 查找文件是否存在

*/

public static FTPFile findFile(String filename) throws IOException{

return findFile(null,filename);

}

/**

* 查找文件是否存在

*/

public static FTPFile findFile(String remotePath, String filename) throws IOException{

try {

if (!ftpClient.isConnected()) {

System.err.println("ftp findfile error : no ftpserver is connected");

return null;

}

FTPFile[] fs = ftpClient.mlistDir(remotePath);

for (FTPFile ff : fs) {

if(filename != null && !filename.equals(ff.getName())){

continue;

}

return ff;

}

} catch (IOException e) {

System.err.println("ftp find file ‘" + filename + "‘ error : "+e.getMessage());

throw e;

}

return null;

}

}

时间: 2024-10-22 06:09:27

FTP 文件操场 FTPClient的相关文章

FTP文件上传与下载

实现FTP文件上传与下载可以通过以下两种种方式实现,分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 [java] view plaincopy package com.cloudpower.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import sun.n

java上传、下载、删除ftp文件

一共三个类,一个工具类Ftputil.,一个实体类Kmconfig.一个测试类Test 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/6697107 Ftputil类--------------- [java] view plaincopy package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStr

Quartz石英调度实现ftp文件上传

Quartz石英调度实现ftp文件上传 实现一个每月1号00点01分自动生成的文件,通过ftp传到另一台主机上 1.先创建一个job任务类FtpUploadFileJobTask import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.apache.commons.net

java实现ftp文件的上传与下载

最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 2.然后是相关类的代码 /** * ftp链接常量 * */ public class Ftp { private String ipAddr;//ip地址 private Integer port;//端口号 private String userName;//用户名 private Strin

Java实现FTP文件与文件夹的上传和下载

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己的计算机上:&quo

Java实现FTP文件与文件夹的上传和下载1

Java实现FTP文件与文件夹的上传和下载 http://www.cnblogs.com/winorgohome/archive/2016/11/22/6088013.html FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇

【问题分析】FTP文件上传与下载

问题描述:通常应用服务器与文件服务器分别在不同的机器上,涉及到文件的上传与下载.通过建立网络映射盘的形式,将文件服务器保存文件的文件夹映射到应用服务器的某个盘符下,经过试验,在tomcat下两台笔记本是可以实现的,但是在生产环境的websphere下试验,经过多番尝试,仍然实现不了. 问题分析:采用FTP的方式实现文件的上传与下载功能,在Java代码中编写客户端的上传与下载,在文件服务器上,直接装一个FTP服务器软件即可.注意生产环境的防火墙以及客户是否允许使用FTP. 解决方案: 工程中导入J

Java实现FTP文件上传与下载

实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cloudpower.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import sun.net.Telnet

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简