/**
*
*/
package com.zjpii.hxj.util;
import java.io.IOException;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
/**
* 对ftp上的文件进行操作的类
* 使用Apache的commons-net-1.4.1.jar包
* @author hxj
* @date 2008-11-1
*
*/
public class FtpUtil {
/**
* 获取ftp上文件的最后修改时间
* @param host ftp主机地址 e.g. "127.0.0.1"
* @param username 用户名 e.g. "username"
* @param password 密码 e.g. "passowrd"
* @param path 文件路径 e.g. "ftputil/test.txt"
* @return Date 如果连接成功返回java.util.Date时间,如果连接失败返回null
* @throws IOException
* @throws SocketException
*/
public Date getFileLastModifiedTime(String host,String username,String password,String path) throws SocketException, IOException{
Date lastModifiedDate = null;
FTPClient ftpClient = new FTPClient();
ftpClient.connect(host);
boolean isLogin = ftpClient.login(username, password);
//连接ftp失败返回null
if(!isLogin){
ftpClient.disconnect();
ftpClient = null;
return null;
}
//获取ftp上path路径下的文件
FTPFile[] fileList = ftpClient.listFiles(path);
for (int i = 0; i < fileList.length; i++) {
lastModifiedDate = fileList[i].getTimestamp().getTime();
}
return lastModifiedDate;
}
/**
* 获得ftp路径下面所有文件的修改时间
* @param host ftp主机地址 e.g. "127.0.0.1"
* @param username 用户名 e.g. "username"
* @param password 密码 e.g. "passowrd"
* @param path 文件路径 e.g. "ftputil"
* @return java.util.Map 连接成功返回一个key是文件名,value是最后修改时间(java.util.Date)的一个map;连接失败返回null
* @throws SocketException
* @throws IOException
*/
public Map getAllFileLastModifiedTime(String host,String username,String password,String path) throws SocketException, IOException{
Date lastModifiedDate = null;
FTPClient ftpClient = new FTPClient();
ftpClient.connect(host);
boolean isLogin = ftpClient.login(username, password);
//连接ftp失败返回null
if(!isLogin){
ftpClient.disconnect();
ftpClient = null;
return null;
}
//获取ftp上path路径下的文件
FTPFile[] fileList = ftpClient.listFiles(path);
//HashMap容量:fileList.length
Map map = new HashMap(fileList.length);
for (int i = 0; i < fileList.length; i++) {
lastModifiedDate = fileList[i].getTimestamp().getTime();
//key 文件名;value修改时间(java.util.Date)
map.put(fileList[i].getName(), lastModifiedDate);
}
return map;
}
/**
* @param args
*/
public static void main(String[] args) {
FtpUtil ftpUtil = new FtpUtil();
try {
String host = "134.98.8.214";
String username = "hz";
String password = "hz";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
Date date =ftpUtil.getFileLastModifiedTime(host, username, password, "qxtmp/wangjun-test.txt");
System.out.println("method1:"+dateFormat.format(date));
Map map = ftpUtil.getAllFileLastModifiedTime(host, username, password, "qxtmp");
System.out.println(map.size());
System.out.println("method2:"+dateFormat.format(map.get("ipashd.txt")));
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件
`needToUpdate()`方法应根据实际需求实现,通常会比较本地文件和FTP文件的最后修改时间。最后,确保正确关闭和断开FTP连接。 这个例子只是一个基本的起点,实际应用中可能需要处理更复杂的逻辑,如错误处理、断点续...
本项目“Delphi根据文件更新时间上传下载的FTP程序”是一个利用Delphi构建的FTP客户端应用,它具有检查本地文件与远程服务器上文件的修改时间的功能,并能自动上传或下载更新的文件。以下将详细解析这个项目的知识点...
介绍:该脚本是为解决相关工程定时同步获取ftp相关文件而编写的;简单高效,并且可行。需要下载资源的同学自行修改相关IP、用户名/密码、指定文件名以及相关路径 使用方法: (1)运行FtpCommand.bat (2)再运行...
在网上找了好多关于ftp技术的资料,...其中还有一些对ftp文件的删除、修改文件夹名称,创建文件夹,获取文件明细等,需要自己调试。有一个word文档,在win10下如何开启ftp,正在研究如何使用C#代码,实现一键开启ftp...
实现这个功能时,PowerBuilder可以创建一个FTP连接对象,使用FTP命令如`LIST`获取服务器文件的详细信息,包括其修改时间。然后,将这些信息与本地文件的修改时间进行比较。如果服务器文件较新,程序就可以执行下载...
FTP(File Transfer Protocol)则是一种用于在网络上进行文件传输的标准协议。将两者结合,我们可以创建一个DOS批处理脚本来批量下载FTP服务器上的文件。这个示例就是关于如何通过DOS批处理实现这一功能。 首先,...
通过本文介绍的方法,我们可以轻松地获取FTP服务器上文件的最后修改时间,并将其转换为时间戳的形式,进而方便进行各种基于时间的操作。这对于自动化运维、数据同步等工作非常有用。希望本文能够帮助到正在寻找解决...
为了自动化FTP文件的上传或下载,可以使用批处理脚本来调用上述FTP命令。批处理脚本是一种简单的脚本语言,主要用于在Windows环境中自动执行一系列命令。下面是一个简单的示例脚本,用于自动上传文件到FTP服务器: ...
它包含了遍历目录、获取文件修改时间等方法,以便找出需要上传的文件。`FilerFile::Zip()`方法用于过滤出最近修改的文件,并将它们存储在一个数组中。然后,使用`ftp->upload()`方法将这些文件逐个上传到FTP服务器。...
在这个基于MFC(Microsoft Foundation Classes)的示例程序中,开发者利用VS2015(Visual Studio 2015)作为集成开发环境,创建了一个能够实现FTP文件下载功能的应用程序。 MFC是微软提供的C++类库,它封装了...
webFTP是一个基于PHP开发的在线FTP文件管理系统,它允许用户通过Web界面进行FTP服务器的文件管理和操作,极大地提升了FTP管理的便捷性和灵活性。作为一个轻量级的解决方案,webFTP使得用户无需安装专门的FTP客户端...
3. 智能同步:通过比较文件的修改时间或内容哈希值来确定是否需要更新。 FTP的安全性: 尽管FTP方便,但其传输数据时默认不加密,可能导致敏感信息暴露。因此,现在更推荐使用FTPS(FTP over SSL/TLS)或SFTP(SSH ...
时间戳可以用来记录文件的最后修改日期,以便确定是否需要更新。程序会比较本地文件的时间戳和服务器上的时间戳,如果服务器上的文件更新,就会触发下载。 5. C#编程语言:C#是.NET框架的主要开发语言,具有丰富的...
在Delphi编程环境中,IDFTP组件是用于执行FTP(File Transfer Protocol)操作的强大工具,它提供了丰富的功能,包括上传、下载、重命名以及删除FTP服务器上的文件和目录。本篇文章将详细阐述如何利用IDFTP组件在...
要实现FTP文件上传,我们首先创建一个`FtpWebRequest`对象,设置其方法为`WebMethod.UploadFile`,然后提供FTP服务器的URL、用户名和密码。接着,打开一个流写入器,将本地文件内容写入请求的主体,最后发送请求并...
创建一个FileStream来读取本地文件,然后使用FtpWebRequest.GetRequestStream()方法获取FTP服务器的上传流,并将本地文件内容写入这个流。 ```csharp request.Method = WebRequestMethods.Ftp.UploadFile; using ...
在C#编程中,获取指定文件的基本信息是常见的任务,这包括文件的名称、大小、创建日期、修改日期等属性。下面将详细讲解如何利用C#的System.IO命名空间中的类来实现这一功能。 首先,我们需要引入System.IO命名空间...
FTP(File Transfer Protocol)是一种广泛使用的协议,用于在网络上进行文件传输。在C#中,我们可以利用System.Net命名空间中的FtpWebRequest和FtpWebResponse类来与FTP服务器进行交互。 1. **FTP连接**: 首先,...