FTP文件传输工具
来源:互联网 发布:iphone铃声助手mac 编辑:程序博客网 时间:2024/05/16 12:58
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
/**
* FTP文件传输工具类
*
*
* @author Jimmy
*
* @version
*
* @since 2017年11月1日
*/
public class FTPFileTransmitUtil {
// ftp 文件存储路径
private static String FTP_PATH = "ftp1\\";
// ftp 登录用户名
private static String FTP_LOGIN_NAME = "root";
// ftp 登录密码
private static String FTP_PASSWORD = "123456";
// ftp 服务器密码
private static String FTP_SERVER_IP = "127.0.0.1";
// ftp 服务器端口号
private static int FTP_SERVER_PORT = 21;
/**
*
* 功能描述:把文件存储在FTP上
*
* @param FolderName
* 存储文件夹
* @param FileName
* 文件名称
* @param data
* 数据
* @return
*
* @author Jimmy
*
* @since 2017年11月1日
*
* @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
*/
public static boolean saveInFTP(String FolderName, String FileName,
byte[] data) {
boolean flag = false;
// 创建FTP客户端
FTPClient ftpClient = new FTPClient();
// 输入流用于读取文件
// FileInputStream fis = null;
ByteArrayInputStream bis = null;
try {
// 如果FolderName 和 FileName都不符合基本要求, 那么就没有必要进行ftp操作
if (FolderName != null && FolderName.compareTo("") != 0
&& FileName != null && FileName.compareTo("") != 0) {
// 建立FTP连接
ftpClient.connect(FTP_SERVER_IP,FTP_SERVER_PORT);
// 如果登录成功后, 才进行创建输入流
if (ftpClient.login(FTP_LOGIN_NAME, FTP_PASSWORD)) {
if (ftpClient.changeWorkingDirectory(FolderName)) {
// 将byte[]写入到输入流中, 实例化
bis = new ByteArrayInputStream(data);
// 设置缓冲
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制类型)
if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) {
flag = ftpClient.storeFile(FileName, bis);
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
flag = false;
} catch (IOException e) {
e.printStackTrace();
flag = false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
try {
// 关闭输入流
IOUtils.closeQuietly(bis);
// 关闭连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
/**
*
* 功能描述:从FTP上读取文件
*
* @param distinationFile
* FTP文件
* @param localFilePath
* 存储到本地的文件路径
* @return
*
* @author Jimmy
*
* @since 2017年11月1日
*
* @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
*/
public static boolean getFromFTP(String distinationFile,
String localFilePath) {
boolean flag = false;
// 创建FTP客户端
FTPClient ftpClient = new FTPClient();
// 输出流用于输出文件
FileOutputStream fos = null;
try {
// 建立FTP连接
ftpClient.connect(FTP_SERVER_IP,FTP_SERVER_PORT);
// 如果登录成功后, 才进行创建输出流
if (ftpClient.login(FTP_LOGIN_NAME, FTP_PASSWORD)) {
// 实例化输出流
fos = new FileOutputStream(localFilePath);
// 设置缓冲
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制类型)
if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) {
ftpClient.retrieveFile(distinationFile, fos);
flag = true;
}
}
} catch (SocketException e) {
e.printStackTrace();
flag = false;
} catch (IOException e) {
e.printStackTrace();
flag = false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
try {
// 关闭输出流
IOUtils.closeQuietly(fos);
// 关闭连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
/**
*
* 功能描述:在ftp上创建文件夹
*
* @return
*
* @author Jimmy
*
* @since 2017年11月1日
*
* @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
*/
private static boolean createDirectory() {
boolean flag = false;
// 创建FTP客户端
FTPClient ftpClient = new FTPClient();
try {
// 建立FTP连接
ftpClient.connect(FTP_SERVER_IP,FTP_SERVER_PORT);
//判断是否连接成功
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)){
System.out.println("FTP服务无法连接!");
}
// 如果登录成功后, 才进行操作
if (ftpClient.login(FTP_LOGIN_NAME, FTP_PASSWORD)) {
// 切换文件路径, 到FTP上的"NNDD3"文件夹下
if (FTP_PATH != null && FTP_PATH.length() > 0 && ftpClient.changeWorkingDirectory(FTP_PATH)) {
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
String time = f.format(new Date());
String FolderName = time + "_ReTransmit";
ftpClient.makeDirectory(FolderName);
flag = true;
}
}
} catch (SocketException e) {
e.printStackTrace();
flag = false;
} catch (IOException e) {
e.printStackTrace();
flag = false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
try {
// 关闭连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
public static void main(String[] args) {
System.out.println("---");
boolean flag = FTPFileTransmitUtil.createDirectory();
if (flag) {
System.out.println("****** FTP文件夹创建成功 ******");
}
System.out.println(flag);
String FolderName = FTP_PATH + "20171101_ReTransmit/";
byte[] data = new byte[1024];
for (int i = 0; i < data.length; i++) {
data[i] = 'a';
}
flag = FTPFileTransmitUtil.saveInFTP(FolderName, "a.txt",data);
if (flag) {
System.out.println("****** FTP文件夹创建成功 ******");
}
getFromFTP("100.png", "H:\\img\\102.png");
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
/**
* FTP文件传输工具类
*
*
* @author Jimmy
*
* @version
*
* @since 2017年11月1日
*/
public class FTPFileTransmitUtil {
// ftp 文件存储路径
private static String FTP_PATH = "ftp1\\";
// ftp 登录用户名
private static String FTP_LOGIN_NAME = "root";
// ftp 登录密码
private static String FTP_PASSWORD = "123456";
// ftp 服务器密码
private static String FTP_SERVER_IP = "127.0.0.1";
// ftp 服务器端口号
private static int FTP_SERVER_PORT = 21;
/**
*
* 功能描述:把文件存储在FTP上
*
* @param FolderName
* 存储文件夹
* @param FileName
* 文件名称
* @param data
* 数据
* @return
*
* @author Jimmy
*
* @since 2017年11月1日
*
* @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
*/
public static boolean saveInFTP(String FolderName, String FileName,
byte[] data) {
boolean flag = false;
// 创建FTP客户端
FTPClient ftpClient = new FTPClient();
// 输入流用于读取文件
// FileInputStream fis = null;
ByteArrayInputStream bis = null;
try {
// 如果FolderName 和 FileName都不符合基本要求, 那么就没有必要进行ftp操作
if (FolderName != null && FolderName.compareTo("") != 0
&& FileName != null && FileName.compareTo("") != 0) {
// 建立FTP连接
ftpClient.connect(FTP_SERVER_IP,FTP_SERVER_PORT);
// 如果登录成功后, 才进行创建输入流
if (ftpClient.login(FTP_LOGIN_NAME, FTP_PASSWORD)) {
if (ftpClient.changeWorkingDirectory(FolderName)) {
// 将byte[]写入到输入流中, 实例化
bis = new ByteArrayInputStream(data);
// 设置缓冲
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制类型)
if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) {
flag = ftpClient.storeFile(FileName, bis);
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
flag = false;
} catch (IOException e) {
e.printStackTrace();
flag = false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
try {
// 关闭输入流
IOUtils.closeQuietly(bis);
// 关闭连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
/**
*
* 功能描述:从FTP上读取文件
*
* @param distinationFile
* FTP文件
* @param localFilePath
* 存储到本地的文件路径
* @return
*
* @author Jimmy
*
* @since 2017年11月1日
*
* @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
*/
public static boolean getFromFTP(String distinationFile,
String localFilePath) {
boolean flag = false;
// 创建FTP客户端
FTPClient ftpClient = new FTPClient();
// 输出流用于输出文件
FileOutputStream fos = null;
try {
// 建立FTP连接
ftpClient.connect(FTP_SERVER_IP,FTP_SERVER_PORT);
// 如果登录成功后, 才进行创建输出流
if (ftpClient.login(FTP_LOGIN_NAME, FTP_PASSWORD)) {
// 实例化输出流
fos = new FileOutputStream(localFilePath);
// 设置缓冲
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制类型)
if (ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)) {
ftpClient.retrieveFile(distinationFile, fos);
flag = true;
}
}
} catch (SocketException e) {
e.printStackTrace();
flag = false;
} catch (IOException e) {
e.printStackTrace();
flag = false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
try {
// 关闭输出流
IOUtils.closeQuietly(fos);
// 关闭连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
/**
*
* 功能描述:在ftp上创建文件夹
*
* @return
*
* @author Jimmy
*
* @since 2017年11月1日
*
* @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
*/
private static boolean createDirectory() {
boolean flag = false;
// 创建FTP客户端
FTPClient ftpClient = new FTPClient();
try {
// 建立FTP连接
ftpClient.connect(FTP_SERVER_IP,FTP_SERVER_PORT);
//判断是否连接成功
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)){
System.out.println("FTP服务无法连接!");
}
// 如果登录成功后, 才进行操作
if (ftpClient.login(FTP_LOGIN_NAME, FTP_PASSWORD)) {
// 切换文件路径, 到FTP上的"NNDD3"文件夹下
if (FTP_PATH != null && FTP_PATH.length() > 0 && ftpClient.changeWorkingDirectory(FTP_PATH)) {
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
String time = f.format(new Date());
String FolderName = time + "_ReTransmit";
ftpClient.makeDirectory(FolderName);
flag = true;
}
}
} catch (SocketException e) {
e.printStackTrace();
flag = false;
} catch (IOException e) {
e.printStackTrace();
flag = false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
} finally {
try {
// 关闭连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
public static void main(String[] args) {
System.out.println("---");
boolean flag = FTPFileTransmitUtil.createDirectory();
if (flag) {
System.out.println("****** FTP文件夹创建成功 ******");
}
System.out.println(flag);
String FolderName = FTP_PATH + "20171101_ReTransmit/";
byte[] data = new byte[1024];
for (int i = 0; i < data.length; i++) {
data[i] = 'a';
}
flag = FTPFileTransmitUtil.saveInFTP(FolderName, "a.txt",data);
if (flag) {
System.out.println("****** FTP文件夹创建成功 ******");
}
getFromFTP("100.png", "H:\\img\\102.png");
}
}
引入jar包 pom.xml
<!-- FTP文件传输 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<!-- ./FTP文件传输 -->
阅读全文
1 0
- 【工具】ftp文件传输
- FTP文件传输工具
- ubuntu系统的ftp文件传输工具
- ftp文件传输
- ftp文件传输
- FTP文件传输
- FTP文件传输
- java使用Apache工具集实现ftp文件传输
- window 作为服务器安装ftp作为文件传输工具
- 08. FTP 文件传输 ❀ 数据包分析工具 Wireshark
- FTP 文件传输协议(转)
- 类FTP文件传输机制
- 类FTP文件传输机制
- FTP:文件传输协议
- FTP文件传输应用分析
- FTP:文件传输协议
- FTP文件传输应用分析
- 文件传输FTP简介
- 处理千万级以上的数据提高查询速度的方法(转)
- h5移动端输入框随键盘上升
- 用nodejs到底做什么?
- codeforces-894C
- Binary String Matching
- FTP文件传输工具
- 斯坦福大学机器学习笔记——过拟合问题以及正则化的解决方法
- 算法14 Permutations
- 吸引百万用户的“社交实验站”,会孵化出下一个陌陌吗?
- 标准OPC Client(OPC客户端)使用说明
- ArrayList和LinkedList的大致区别
- 前端初始化代码
- DPDK-__attribute__((constructor))
- 手动部署 ceph osd (luminous 版)