`

使用apache commons net获取服务器上文件时间问题

阅读更多

项目上使用了apache commons net包,发现获取服务器上的文件的时间比真实时间少了8个小时,debug了一下午,原以为是时区的问题,但是最终发现似乎源码是有问题的。 主要是FTPTimestampParserImpl.java的parseTimestamp方法,代码如下:

/** 
     * Implements the one {@link  FTPTimestampParser#parseTimestamp(String)  method}
     * in the {@link  FTPTimestampParser  FTPTimestampParser} interface 
     * according to this algorithm:
     * 
     * If the recentDateFormat member has been defined, try to parse the 
     * supplied string with that.  If that parse fails, or if the recentDateFormat
     * member has not been defined, attempt to parse with the defaultDateFormat
     * member.  If that fails, throw a ParseException.
     * 
     * This method allows a {@link Calendar} instance to be passed in which represents the
     * current (system) time.
     * 
     * @see org.apache.commons.net.ftp.parser.FTPTimestampParser#parseTimestamp(java.lang.String)
     * 
     * @param timestampStr The timestamp to be parsed
     */
    public Calendar parseTimestamp(String timestampStr) throws ParseException {
        Calendar now = Calendar.getInstance();
        return parseTimestamp(timestampStr, now);
    }
    

 这个方法的参数是一个时间字符串,是从服务器上返回的(类似于我们通过终端连接服务器 执行“ls -l”命令 看到的时间部分,只有年月时分)。方法的第一行,按照注释上的意思是服务器时间,但是实际上代码是在本地执行,获取的一定是本地时间,问题似乎就出现在这里,紧接着第二行调用了另外一个方法,代码如下:

 

public Calendar parseTimestamp(String timestampStr, Calendar serverTime) throws ParseException {
  // 方法体就省略了,从参数名就可以看出来 第二个参数应该是服务器时间
}

 注释太多,就不贴出来了,从参数名就可以看出来 第二个参数应该是服务器时间。

分享到:
评论

相关推荐

    Apache Commons NET 3.0

    1. FTP支持:Apache Commons Net 3.0提供了全面的FTP客户端实现,允许开发者进行文件上传、下载、目录浏览、文件重命名等操作。它支持FTP和FTPS(FTP over SSL/TLS)协议,确保数据传输的安全性。FTPClient类是主要...

    基于apache commons.fileupload的文件上传组件

    在创建一个基于Apache Commons FileUpload的文件上传组件时,通常会包含以下步骤: 1. 创建`DiskFileItemFactory`实例。 2. 使用工厂创建`ServletFileUpload`实例,设置大小限制。 3. 解析`HttpServletRequest`对象...

    Apache Commons fileUpload实现文件上传

    1. 添加依赖:在项目中引入Apache Commons IO和FileUpload的JAR文件,或者在Maven或Gradle项目中添加对应的依赖。 2. 创建Servlet或控制器:设置请求的解析器,例如在Servlet中使用`ServletFileUpload`类。 3. ...

    commons-net-jar包.zip

    总的来说,Apache Commons Net是一个强大的网络编程工具集,无论是在处理FTP文件传输,还是进行远程服务器交互,或是发送邮件,都能提供便捷的API。在选择使用哪个版本时,应根据项目需求和已知的bug列表来决定,...

    commons-net-3.6.jar

    Apache Commons Net的FTPClient支持被动模式,通过设置passiveMode(),客户端能在服务器指定的端口上建立数据连接,解决此类网络问题。 五、源码解析 深入学习`commons-net-3.6.jar`的源码,可以帮助开发者理解FTP...

    org.apache.commons.fileupload 文件上传至数据库

    标题“org.apache.commons.fileupload 文件上传至数据库”指的是使用Apache Commons FileUpload库将用户上传的文件存储到数据库中的技术。Apache Commons FileUpload是Apache软件基金会的一个开源项目,它提供了一个...

    Apache Commons Net » 3.3 org.apache.commons.net.ftp.FTPClient

    Apache Commons Net库是Java开发人员在处理各种网络协议时常用的一个工具包,其中包括对FTP(文件传输协议)的全面支持。在3.3版本中,`org.apache.commons.net.ftp.FTPClient`类是实现FTP通信的核心组件。这个类...

    利用org.apache.commons.fileupload上传多个文件

    - `saveFile` 方法读取 `FileItem` 中的输入流,将其写入服务器上的文件。 三、关键知识点 1. **DiskFileItemFactory**:这是处理文件上传的基础,它负责在内存或磁盘上存储临时文件,并允许设置内存阈值,超过该...

    基于 Apache Commons Net 实现javaFTP上传.pdf

    Apache Commons Net 是一个广泛使用的 Java 库,它提供了多种网络协议的实现,其中包括 FTP(文件传输协议)的支持。在这个PDF文档中,作者分享了如何利用 Apache Commons Net 实现Java FTP上传的功能,特别是针对...

    org.apache.commons.httpclient 远程下载文件

    Apache Commons HttpClient 是一个Java库,专门用于执行HTTP和HTTPS请求,包括远程文件的下载。这个库为开发者提供了高级HTTP客户端功能,比如支持多种HTTP方法(GET、POST等)、处理Cookies、管理连接池以及进行...

    Apache Jakarta Commons 使用手册

    ### Apache Jakarta Commons 使用手册知识点详解 #### 一、概述 《Apache Jakarta Commons 使用手册》是一部详细介绍Apache Jakarta Commons项目下的各种Java组件的专业书籍。该书由Will Iverson编写,旨在为...

    org.apache.commons.net.ftp

    3. **FTPFile**: 该类代表FTP服务器上的一个文件或目录,提供了获取文件名、大小、修改时间等属性的方法。 4. **FTPListParseEngine**: 这个类用于解析FTP服务器返回的目录列表,通常这些列表是以不同的格式返回的...

    获取ftp服务器文件的大小

    ### 获取FTP服务器文件大小的知识点解析 在进行网络文件传输时,经常需要了解远程文件的大小,以便于更好地控制文件的下载进度或者进行其他相关的管理操作。本文将围绕“获取FTP服务器文件的大小”这一主题展开,...

    org.apache.commons.httpclient-3.1.jar

    在使用Apache Commons HttpClient 3.1时,我们通常会遇到的文件有: - `commons-httpclient-3.1.jar`:这是HttpClient的主要库文件,包含了所有必要的类和方法。 - `RELEASE_NOTES.txt`:记录了该版本的发布说明,...

    文件上传组件_Apache_Commons_FileUpload_应用指南.pdf

    首先,需要在页面中添加表单代码,例如:()%>/servlet/SimpleUpload" enctype="multipart/form-data" method="post">然后,在服务器端使用 Apache Commons FileUpload 组件解析上传的文件数据。 四、FileUpload组件...

    Apache Commons 工具类介绍及简单使用 (2).pdf

    Apache Commons 工具类介绍及简单使用 Apache Commons 是一个开源的 Java 库,提供了许多实用的工具类,帮助开发者快速构建 Java 应用程序。本文将对 Apache Commons 工具类进行介绍,并提供简单的使用示例。 ...

    apache-commons-net-3.0.1-src

    Apache Commons Net提供了IMAPClient,用于连接IMAP服务器,获取邮箱信息,读取、移动、删除邮件等操作。这对于开发邮件客户端或者需要处理邮件的应用程序非常有用。 Telnet是一种远程登录协议,允许用户通过网络...

    org.apache.commons.fileupload

    使用Apache Commons FileUpload,开发者可以编写更安全、高效且易于维护的文件上传代码,而无需关注底层的复杂性。在实际应用中,配合使用Spring MVC或其他Web框架,可以轻松地集成文件上传功能,提高用户体验。

Global site tag (gtag.js) - Google Analytics