-
java如何实现从远程FTP服务器定时更新相关文件10
背景是这样的:
远程ftp服务器会更新某目录下的一些文件,本地服务器需要定时下载这些更新后的文件。
我的想法是:由最后修改时间判断该文件是不是最新的(用Spring+Quartz定时去ftp服务器看是否有文件可以更新),然后下载更新的文件,这样可避免重复下载。
各位有没有类似的程序例子?
谢谢了!
ftpClient有一种方法是 ftpClient.getModificationTime(String pathname)可以得到文件的最后修改时间
Quartz+Spring实现定时任务配置好了,业务逻辑那怎么写
问题补充:huoyj 写道经你这么的分析,这里面已经没有什么无法解决的技术问题了,随手就能写出代码,为什么还要别人给例子呢。
用ftpClient.getModificationTime(String pathname)这个方法时候总是报数组越界异常,另外怎么拿ftp的文件修改时间跟已下载的文件时间比较,该怎么比较有点不明白,请您指教,谢谢
问题补充:huoyj 写道apache的common-net里面有FTPFile类,代表FTP服务器上的一个文件,FTPFile类里面有方法getTimestamp就是获取文件的修改时间的,而你本地的文件File也有类似的方法,你获取到后可以直接比较了。
不过你应该注意到一个问题,那就是时区必须一致。
// 取远程文件信息
Map<String, FileObject> remotefiles = getRemotefiles();
// 取本地文件信息
Map<String, FileObject> localfiles = getLocalfiles();
// 按远程文件信息对比本地文件信息
Iterator it = remotefiles.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
System.out.println(remotefiles.get(key));
在这里该怎么写呢?
localfiles.get(key).lasttime可以得到当地目录各文件时间,
remotefiles.get(key).lasttime可以得到服务器目录各文件时间
问题补充:huoyj 写道FileObject localFile = localfiles.get(key); FileObject remoteFile = remotefiles.get(key); if(localFile==null&&remoteFile!=null) //如果本地没有文件,就下载 { //download return; }else if(remoteFile==null) //远程文件被删就不用下载了 { return; } //根据本地和远程文件的最后修改时间判断下不下载。 long localFileTime = localFile.lasttime; long remoteFileTime = remoteFile.lasttime; if(localFileTime<remoteFile) //本地文件较旧 { //download return ; } return;
大概就是这样的吧,你再看着改改。
Iterator it = remotefiles.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
FileObject localFile = localfiles.get(key);
FileObject remoteFile = remotefiles.get(key);
if (localFile == null && remoteFile != null) // 如果本地没有文件,就下载
{
doDownload(remotefiles);
return;
}
System.out.println(localfiles.get(key).lasttime);
// 根据本地和远程文件的最后修改时间判断下不下载。
Date localFileTime = CommonStringDateUtil
.parse(localFile.lasttime);
Date remoteFileTime = CommonStringDateUtil
.parse(remoteFile.lasttime);
if (localFileTime.before(remoteFileTime)) // 本地文件较旧
{
doDownload(remotefiles);
return;
}else{
System.out.println("不需要更新");
}
return;
}
解决了,谢谢给予帮助2011年11月30日 16:41
3个答案 按时间排序 按投票排序
-
采纳的答案
FileObject localFile = localfiles.get(key); FileObject remoteFile = remotefiles.get(key); if(localFile==null&&remoteFile!=null) //如果本地没有文件,就下载 { //download return; }else if(remoteFile==null) //远程文件被删就不用下载了 { return; } //根据本地和远程文件的最后修改时间判断下不下载。 long localFileTime = localFile.lasttime; long remoteFileTime = remoteFile.lasttime; if(localFileTime<remoteFile) //本地文件较旧 { //download return ; } return;
大概就是这样的吧,你再看着改改。2011年12月01日 13:27
-
apache的common-net里面有FTPFile类,代表FTP服务器上的一个文件,FTPFile类里面有方法getTimestamp就是获取文件的修改时间的,而你本地的文件File也有类似的方法,你获取到后可以直接比较了。
不过你应该注意到一个问题,那就是时区必须一致。2011年12月01日 10:01
相关推荐
远程ftp服务器会更新某目录下的一些文件,本地服务器需要定时下载这些更新后的文件 由最后修改时间判断该文件是不是最新的,然后下载更新的文件,这样可避免重复下载。 有jar包,有实例,完整可运行实例
GetButton部分为从FTP服务器下传一个文件; PutButton部分为向FTP服务器上传一个文件。 别忘了在程序中还要引入两个库文件(import sun.net.*,import sun.net.ftp.*)。 以下是这三部分的JAVA源程序: (1)显示FTP...
JAVA代码实现远程操作服务器文件,实现FTP,共享文件夹操作
java实现FTP服务器,java实现FTP服务器
java+jsp代码实现从FTP服务器上传下载文件。 里面给了java方法和jsp页面的代码。主要是实现从FTP服务器上面下载文件到自己本地文件夹下面。另外还给了几个网站供大家参考。
从Ftp服务器定时下载文件 并对文件解析 其中用到数据库 可以自己根据需求配置
这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...
JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。
Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件
Java 程序实现的 FTP 跨服务器文件上传下载功能。
java上传文件到ftp服务器,从ftp服务器下载东西demo,日管理
对FTP服务器文件的基本操做:上传下载递归目录遍历等。
java 从ftp服务器下载文件!方便快捷,哈哈!
看了很多大神的博客,自己改造了下,终于做出了可以在线预览远程FTP服务器上的PDF文件的功能。大概花了1天时间,遇到很多坑。所以总结下,写了个文档,很详细,一步一步来就行了
下载后配置好自己FTP服务器ip,端口号(默认21),用户名,密码和服务器根目录,下载到本地的位置即可,好使!
JAVA写的FTP服务器和客户端
JAVA获取FTP文件列表,功能齐全。包括:链接到服务器,上传文件到FTP服务器,从FTP服务器上下载文件并返回下载文件长度,返回FTP目录下的文件列表,删除FTP上的文件及目录,关闭链接。
java实现连接登录Ftp,下载Ftp指定文件夹下的所有文件,并解压所有压缩文件,同时支持对指定文件夹进行文件压缩