JAVA调用FTPClient实现FTP上文件的操作
来源:互联网 发布:京东商城html源码 编辑:程序博客网 时间:2024/04/29 10:51
在Java项目中,经常需要做一些FTP的操作,如向FTP上传文件、下载文件、文件重命名、文件删除、创建文件夹等等,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载重命名等操作文件。
如果是使用MAVEN管理项目则添加
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ftp</artifactId>
<version>2.13.2</version>
</dependency>
如果是普通的Java项目则需要添加camel-ftp-2.13.2.jar、camel-core-2.13.2.jar两个jar包
package cn.com.bestpay.pgw.zhpk;
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.apache.commons.io.IOUtils;import org.apache.commons.NET.ftp.FTPClient;
// int port 为FTP的端口号 默认为21
public class FtpUtils {
/**
* ftp上传单个文件
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 上传至ftp的路径名不包括ftp地址
* @param srcFileName
* 要上传的文件全路径名
* @param destName
* 上传至ftp后存储的文件名
* @throws IOException
*/
public static boolean upload(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String srcFileName, String destName) throws IOException {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
boolean result = false;
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
File srcFile = new File(srcFileName);
fis = new FileInputStream(srcFile);
// 设置上传目录
ftpClient.changeWorkingDirectory(directory);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("gbk");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
result = ftpClient.storeFile(destName, fis);
return result;
} catch (NumberFormatException e) {
System.out.println("FTP端口配置错误:不是数字:");
throw e;
} catch (FileNotFoundException e) {
throw new FileNotFoundException();
} catch (IOException e) {
throw new IOException(e);
} finally {
IOUtils.closeQuietly(fis);
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
* FTP单个文件下载
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要下载的文件所在ftp的路径名不包含ftp地址
* @param destFileName
* 要下载的文件名
* @param downloadName
* 下载后锁存储的文件名全路径
*/
public static boolean download(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String destFileName, String downloadName) throws IOException {
FTPClient ftpClient = new FTPClient();
boolean result = false;
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.changeWorkingDirectory(directory);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
System.out.println("destFileName:" + destFileName + ",downloadName:" + downloadName);
result = ftpClient.retrieveFile(destFileName, new FileOutputStream(downloadName));
return result;
} catch (NumberFormatException e) {
throw e;
} catch (FileNotFoundException e) {
throw new FileNotFoundException();
} catch (IOException e) {
throw new IOException(e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要重命名的文件所在ftp的路径名不包含ftp地址
* @param oldFileName
* 要重命名的文件名
* @param newFileName
* 重命名后的文件名
* @throws IOException
*/
public static boolean rename(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String oldFileName, String newFileName) throws IOException {
/**
* 判断远程文件是否重命名成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.rename(oldFileName, newFileName);// 重命名远程文件
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要删除的文件所在ftp的路径名不包含ftp地址
* @param fileName
* 要删除的文件名
* @return
* @throws IOException
*/
public static boolean remove(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String fileName) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.deleteFile(fileName);// 删除远程文件
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要创建的目录所在ftp的路径名不包含ftp地址
* @param newDirectory
* 要创建的新目录名
* @return
* @throws IOException
*/
public static boolean makeDirecotory(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String newDirectory) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.makeDirectory(newDirectory);// 创建新目录
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要重命名的目录所在ftp的路径名不包含ftp地址
* @param oldDirectory
* 要重命名的旧目录名
* @param newDirectory
* 重命名后的新目录
* @return
* @throws IOException
*/
public static boolean renameDirecotory(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String oldDirectory, String newDirectory) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.rename(oldDirectory, newDirectory);// 重命名目录
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要重命名的目录所在ftp的路径名不包含ftp地址
* @param deldirectory
* 要删除的目录名
* @return
* @throws IOException
*/
public static boolean removeDirecotory(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String deldirectory) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.removeDirectory(deldirectory);// 删除目录
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* @param userName
* @param password
* @param directory
* @return
* @throws IOException
*/
public static String[] list(String logSeq, String ftpUrl, String userName, int port, String password,
String directory) throws IOException {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setControlEncoding("gbk");
ftpClient.changeWorkingDirectory(directory);
ftpClient.enterLocalPassiveMode();
String[] list = ftpClient.listNames();// 删除目录
return list;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
}
如果是使用MAVEN管理项目则添加
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ftp</artifactId>
<version>2.13.2</version>
</dependency>
如果是普通的Java项目则需要添加camel-ftp-2.13.2.jar、camel-core-2.13.2.jar两个jar包
package cn.com.bestpay.pgw.zhpk;
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.apache.commons.io.IOUtils;import org.apache.commons.NET.ftp.FTPClient;
// int port 为FTP的端口号 默认为21
public class FtpUtils {
/**
* ftp上传单个文件
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 上传至ftp的路径名不包括ftp地址
* @param srcFileName
* 要上传的文件全路径名
* @param destName
* 上传至ftp后存储的文件名
* @throws IOException
*/
public static boolean upload(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String srcFileName, String destName) throws IOException {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
boolean result = false;
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
File srcFile = new File(srcFileName);
fis = new FileInputStream(srcFile);
// 设置上传目录
ftpClient.changeWorkingDirectory(directory);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("gbk");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
result = ftpClient.storeFile(destName, fis);
return result;
} catch (NumberFormatException e) {
System.out.println("FTP端口配置错误:不是数字:");
throw e;
} catch (FileNotFoundException e) {
throw new FileNotFoundException();
} catch (IOException e) {
throw new IOException(e);
} finally {
IOUtils.closeQuietly(fis);
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
* FTP单个文件下载
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要下载的文件所在ftp的路径名不包含ftp地址
* @param destFileName
* 要下载的文件名
* @param downloadName
* 下载后锁存储的文件名全路径
*/
public static boolean download(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String destFileName, String downloadName) throws IOException {
FTPClient ftpClient = new FTPClient();
boolean result = false;
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.changeWorkingDirectory(directory);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
System.out.println("destFileName:" + destFileName + ",downloadName:" + downloadName);
result = ftpClient.retrieveFile(destFileName, new FileOutputStream(downloadName));
return result;
} catch (NumberFormatException e) {
throw e;
} catch (FileNotFoundException e) {
throw new FileNotFoundException();
} catch (IOException e) {
throw new IOException(e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要重命名的文件所在ftp的路径名不包含ftp地址
* @param oldFileName
* 要重命名的文件名
* @param newFileName
* 重命名后的文件名
* @throws IOException
*/
public static boolean rename(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String oldFileName, String newFileName) throws IOException {
/**
* 判断远程文件是否重命名成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.rename(oldFileName, newFileName);// 重命名远程文件
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要删除的文件所在ftp的路径名不包含ftp地址
* @param fileName
* 要删除的文件名
* @return
* @throws IOException
*/
public static boolean remove(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String fileName) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.deleteFile(fileName);// 删除远程文件
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要创建的目录所在ftp的路径名不包含ftp地址
* @param newDirectory
* 要创建的新目录名
* @return
* @throws IOException
*/
public static boolean makeDirecotory(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String newDirectory) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.makeDirectory(newDirectory);// 创建新目录
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要重命名的目录所在ftp的路径名不包含ftp地址
* @param oldDirectory
* 要重命名的旧目录名
* @param newDirectory
* 重命名后的新目录
* @return
* @throws IOException
*/
public static boolean renameDirecotory(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String oldDirectory, String newDirectory) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.rename(oldDirectory, newDirectory);// 重命名目录
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* ftp地址
* @param userName
* ftp的用户名
* @param password
* ftp的密码
* @param directory
* 要重命名的目录所在ftp的路径名不包含ftp地址
* @param deldirectory
* 要删除的目录名
* @return
* @throws IOException
*/
public static boolean removeDirecotory(String logSeq, String ftpUrl, String userName, int port, String password,
String directory, String deldirectory) throws IOException {
/**
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
*/
boolean result = false;
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.changeWorkingDirectory(directory);
result = ftpClient.removeDirectory(deldirectory);// 删除目录
return result;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
*
* @param ftpUrl
* @param userName
* @param password
* @param directory
* @return
* @throws IOException
*/
public static String[] list(String logSeq, String ftpUrl, String userName, int port, String password,
String directory) throws IOException {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ftpUrl, port);
ftpClient.login(userName, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setControlEncoding("gbk");
ftpClient.changeWorkingDirectory(directory);
ftpClient.enterLocalPassiveMode();
String[] list = ftpClient.listNames();// 删除目录
return list;
} catch (NumberFormatException e) {
throw e;
} catch (IOException e) {
throw new IOException("连接ftp服务器失败!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
}
0 0
- JAVA调用FTPClient实现FTP上文件的操作
- JAVA中使用FTPClient实现FTP上文件的操作
- JAVA中使用FTPClient实现FTP上文件的操作
- java 操作 HDFS上文件
- FTPClient实现ftp相关操作
- VM虚拟机上安装Eclipse和Hadoop上文件命令操作的java代码实现
- JAVA FTPClient FTP简单操作
- java实现pc机上文件的查找
- JAVA中的FtpClient与FTPClient,并实现jsp页面下载ftp服务器上的文件
- 下载FTP服务器上文件
- 遍历ftp上文件 CFtpFileFind
- 网页上文件下载功能的实现
- 获取ftp上文件的最后修改时间
- 获取ftp上文件的最后修改时间
- python获取ftp上文件的修改时间
- FTP操作(FTPClient)
- sun.net.ftp.FtpClient(java访问/操作ftp)
- sun.net.ftp.FtpClient(java访问/操作ftp)
- 计算机网络(自顶向下方法)(原书第4版)课后复习题解答(第四章)
- CSS3基础(1)2D与3D转换
- 109. Convert Sorted List to Binary Search TreeDescriptionHintsSubmissionsSolutionsTotal Accepted: 1
- Mantis的一些设置纪要
- matplotlib-绘制精美的图标 第一节 快速绘图(II)
- JAVA调用FTPClient实现FTP上文件的操作
- cocos用RenderTexture截图白色
- spark 连接hbase hive
- Windows修改hosts文件的方法
- MVC模式,Model1,Model2
- 随笔(1)备考GRE有感-Issue篇
- linux下的文件的拓展,由lseek实现
- synchronized实现线程同步
- Leetcode学习(14)—— Delete Node in a Linked List