Java IO file length()和lastModified()在处理数百万个文件时执行速度较慢

Java IO file length()和lastModified()在处理数百万个文件时执行速度较慢,java,io,Java,Io,我在远程服务器上有一百万个文件。这些文件经常更新。我们在检查后的某个特定时间在本地服务器上下载这些文件。此下载是根据文件大小的变化以及远程和本地服务器文件之间的修改时间完成的 这种检查(使用length()和lastModified())会在本地服务器上进行大量IO调用,并且需要同时使用length和lastModified()这是一些场景 请注意:远程服务器是FTP服务器,我无法控制 越过它。我有100-200个远程FTP服务器来获取数据。每人 FTP服务器上有一个线程 请建议有效的解决方案,

我在远程服务器上有一百万个文件。这些文件经常更新。我们在检查后的某个特定时间在本地服务器上下载这些文件。此下载是根据文件大小的变化以及远程和本地服务器文件之间的修改时间完成的

  • 这种检查(使用length()和lastModified())会在本地服务器上进行大量IO调用,并且需要同时使用length和lastModified()这是一些场景


  • 请注意:远程服务器是FTP服务器,我无法控制 越过它。我有100-200个远程FTP服务器来获取数据。每人 FTP服务器上有一个线程

    请建议有效的解决方案,我可以减少本地文件的IO调用,远程服务器没有问题

    谢谢


  • 网络电话很贵。我建议您创建一个服务器,该服务器将接收日期并返回在该日期之后修改的文件列表,并在您的远程计算机上运行它。然后只下载你想要的文件


    如果远程主机是linux服务器,您可以使用适当的参数运行
    find
    ,以获得更改文件的列表。在这种情况下,请咨询unix.stackexchange.com

    网络呼叫费用高昂。我建议您创建一个服务器,该服务器将接收日期并返回在该日期之后修改的文件列表,并在您的远程计算机上运行它。然后只下载你想要的文件


    如果远程主机是linux服务器,您可以使用适当的参数运行
    find
    ,以获得更改文件的列表。在这种情况下,请咨询
    unix.stackexchange.com

    ,您可以只检查修改时间而不是大小;但我不确定这不是同一个
    lstat
    呼叫。无论如何,在本地机器上执行检查,而不是通过网络文件系统!检查同步是否可用,但如果您没有更好的访问权限…请解释或共享有关同步的链接。无法理解。您可以只检查修改时间,而不检查大小;但我不确定这不是同一个
    lstat
    呼叫。无论如何,在本地机器上执行检查,而不是通过网络文件系统!检查同步是否可用,但如果您没有更好的访问权限…请解释或共享有关同步的链接。无法理解。远程服务器是FTP服务器,我无法控制它。如果只能通过FTP访问它,您将无能为力。在这里使用NIO api有益吗?不这样认为。但我有个主意。也许您可以打开几个ftp会话并并行执行此任务?@user0011-没问题,您可以使用ExecutorService管理线程以完成此任务!远程服务器是FTP服务器,我无法控制它。如果只能通过FTP访问它,您将无能为力。在这里使用NIO api有益吗?我不这么认为。但我有个主意。也许您可以打开几个ftp会话并并行执行此任务?@user0011-没问题,您可以使用ExecutorService管理线程以完成此任务!