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");
}


}



引入jar包 pom.xml

<!-- FTP文件传输 -->
<dependency>
   <groupId>commons-net</groupId>
   <artifactId>commons-net</artifactId>
   <version>3.6</version>
</dependency>
<!-- ./FTP文件传输 -->





原创粉丝点击