import java.io.File;
import java.io.FileInputStream;
import java.util.Map;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import com.sitech.ismp.coll.busi.e2e.rule.AnalysisRule;
/**
* @author smj
* */
public class upToFtp extends AnalysisRule {
public upToFtp(Map<String, String> params) {
super(params);
// TODO Auto-generated constructor stub
}
private FTPClient ftp;
/**
* Description: 向FTP服务器上传文件夹
* @param path 上传到ftp服务器哪个路径下
* @param url FTP服务器地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @author smj
* @throws Exception
*/
private boolean connect(String path,String url,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(url,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
boolean flag4=ftp.changeWorkingDirectory(path);
logger.info("切换工作目录:"+flag4+"所要切换的路径:"+path);
result = true;
return result;
}
/**
*
* @param file 上传的文件或文件夹
* @throws Exception
*/
private boolean upload(File file) throws Exception{
if(file.isDirectory()){
//ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getPath());
String[] files = file.list();
logger.info("文件列表有:"+files.toString() );
for (int i = 0; i < files.length; i++) {
File file1 = new File(files[i]);
logger.info("我端的文件名:"+file1.getName() + "\t" );
if(file1.isDirectory()){
upload(file1);
ftp.changeToParentDirectory();
}else{
File file2 = new File(files[i]);
logger.info("文件名:"+file2.getName() + "\t" );
FileInputStream input = new FileInputStream(file1);
boolean flag3= ftp.storeFile(file2.getName(), input);
logger.info("文件传输状态"+flag3);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
return true;
}
/**
* 移动指定文件或文件夹(包括所有文件和子文件夹)
*
* @param fromDir
* 要移动的文件或文件夹
* @param toDir
* 目标文件夹
* @throws Exception
*/
public void MoveFolderAndFileWithSelf(String from, String to) throws Exception {
try {
File dir = new File(from);
to += File.separator + dir.getName();
File moveDir = new File(to);
if(dir.isDirectory()){
if (!moveDir.exists()) {
moveDir.mkdirs();
}
}else{
File tofile = new File(to);
dir.renameTo(tofile);
return;
}
//System.out.println("dir.isDirectory()"+dir.isDirectory());
//System.out.println("dir.isFile():"+dir.isFile());
// 文件一览
File[] files = dir.listFiles();
if (files == null)
return;
// 文件移动
for (int i = 0; i < files.length; i++) {
System.out.println("文件名:"+files[i].getName());
if (files[i].isDirectory()) {
MoveFolderAndFileWithSelf(files[i].getPath(), to);
// 成功,删除原文件
files[i].delete();
}
File moveFile = new File(moveDir.getPath() + File.separator + files[i].getName());
// 目标文件夹下存在的话,删除
if (moveFile.exists()) {
moveFile.delete();
}
files[i].renameTo(moveFile);
}
//dir.delete();
} catch (Exception e) {
throw e;
}
}
protected void excute() {
logger.info("upToFtp start........");
try {
boolean flag1=connect("/ibnmsftp", "10.145.206.133", 21, "ibnmsftp", "ibnmsftp#2012");
logger.info("连接对端ftp状态为::"+flag1 + "\t" );
File file = new File("/iBNMSConsole/ismp/CRM_DATA/");
logger.info("文件路径为:"+file.getPath() + "文件名字为:" +file.getName()+ "\t" );
boolean flag= upload(file);
logger.info("文件上传状态为:"+flag + "\t" );
if(flag==true){
MoveFolderAndFileWithSelf("/iBNMSConsole/ismp/CRM_DATA/","/iBNMSConsole/ismp/CRM_HIS/");
}
logger.info("upToFtp end........");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.info("上传文件出错");
}
}
}
分享到:
相关推荐
本教程将深入讲解如何使用QT进行FTP(File Transfer Protocol)操作,包括文件的上传、下载、创建文件夹以及删除目录。 FTP是一种基于TCP协议的应用层协议,用于在Internet上进行文件传输。QT库提供了...
FTP(File Transfer Protocol)服务端程序是用于在网络上进行文件传输的一种标准协议的实现,它允许用户从一台计算机(客户端)向另一台计算机(服务器)上传或下载文件。在这个场景中,我们讨论的是一个专为初学者...
FTP(File Transfer Protocol)...总结,通过这个“简单实用的ftp服务端”压缩包,你可以快速搭建一个本地FTP服务器,实现文件的便捷共享和管理。在实际应用中,务必注意安全性和性能优化,以确保FTP服务稳定可靠。
FTP服务器允许远程用户连接到本地计算机,上传或下载文件。在这个场景下,"ftpserv.exe"就是这个FTP服务器的主程序。用户只需双击运行,服务器即启动,无需复杂的配置过程。这种绿色软件的优势在于,它可以随时随地...
`readme.txt`文件通常包含软件的使用说明和注意事项,帮助用户更好地理解和操作这款FTP服务端工具。 配置FTP服务器的过程简单明了: 1. **启动服务**:首先,找到并双击运行`FtpServer.exe`,程序启动后会显示一个...
在IT行业中,定时FTP上传文件是一项常见的自动化任务,尤其对于监控、数据分析或者备份等场景尤为重要。这个任务涉及到几个关键知识点,下面将详细讲解。 首先,我们要理解“定时”这一概念。在计算机领域,定时...
本篇文章将详细讲解如何在Windows环境中设置和配置FTP服务端,以Serv-U FTP Server为例。 一、Serv-U FTP Server简介 Serv-U是一款功能强大的FTP服务器软件,支持多平台,包括Windows。它提供了安全、高效且易于...
4、提供文件(文件夹)的下载、上传、删除、改名功能。 5、支持多用户访问,可以设置最大连接用户。 6、支持账户/密码访问和权限控制,同样支持匿名访问。 7、配置信息自动保存,下次不用重新输入,用户名清空自动...
FTP服务端程序是运行在服务器上的软件,负责接收来自客户端的FTP请求,处理文件传输操作,并管理用户的权限。常见的FTP服务器软件有vsftpd、ProFTPD和FileZilla Server等。这些服务端程序通常需要配置,例如设置监听...
搭建FTP服务端对于需要共享文件或者远程管理文件系统的场景至关重要。本篇文章将详细讲解如何搭建FTP服务端。 首先,我们需要一个FTP服务器软件。在提供的文件名列表中,我们看到了"ftpserver.exe",这可能是一个...
标题中的“监控本地目录并同步FTP服务器的服务”指的是一个基于C#编程语言开发的应用程序,其主要功能是实时监测用户指定的本地文件夹,并在文件发生变化(如新增、修改或删除)时,自动将这些变更同步到FTP(File ...
在Java编程环境中,FTP(File Transfer Protocol)是一个广泛使用的协议,用于在本地计算机和远程服务器之间传输文件。本文将深入探讨如何使用Java实现一个FTP客户端,以根据服务器的目录结构在本地创建文件夹并下载...
2. **命令解析**:服务器接收客户端发送的FTP命令,如`USER`(认证用户)、`PASS`(密码)、`LIST`(列出目录内容)、`RETR`(下载文件)、`STOR`(上传文件)等,并执行相应的操作。 3. **数据传输**:FTP使用控制...
1、提供文件(文件夹)的下载、上传、删除、改名功能。 2、支持多用户访问,可以设置最大连接用户。 3、支持账户/密码访问和权限控制,同样支持匿名访问。 4、配置信息自动保存,下次不用重新输入,用户名清空自动恢复...
总结, Serv-U作为一款服务端FTP搭建工具,提供了便捷的服务器配置和管理方式,无论对个人还是企业,都能满足其文件共享和传输的需求。通过合理配置和安全设置,用户可以高效、安全地使用FTP服务。
最后,服务端保存的图片文件可以在Web界面或者通过FTP等工具下载到电脑文件夹中。 总结,这个示例涵盖了Android应用如何选择图片、上传图片,以及服务端如何接收并保存图片的关键步骤。在实际项目中,可能还需要...
1. 网站内容更新:Web开发者可以通过FTP上传网页和相关文件到服务器。 2. 文件共享:企业内部可以设置FTP服务器,方便员工之间共享文件。 3. 远程协作:团队成员可以通过FTP交换项目文件,进行远程协作。 4. 自动...
它允许用户从一台计算机(FTP客户端)向另一台计算机(FTP服务器)上传、下载或管理文件。本教程将详细介绍如何搭建FTP服务器以及安装FTP客户端。 首先,我们要搭建FTP服务器。 Serv-U是一款功能强大的FTP服务器...
- 在Forge服务端运行后,你可以通过FTP客户端上传模组到`mods`文件夹,Forge会自动处理模组加载。 - 配置服务端模组需修改`server.properties`或创建`modpacks`文件夹,具体操作需参考模组文档。 三、Forge的应用...
4. **日志记录**:FTP服务器通常会记录用户的登录、上传和下载活动,有助于监控服务器的使用情况和排查问题。 5. **文件权限控制**:根据用户角色分配不同的文件操作权限,如读、写、执行等。 6. **虚拟目录**:...