我有一些CSV文件,我想每天从雅虎财经下载。我希望我的应用程序读取文件的创建日期(在我的计算机上,而不是服务器上)。如果创建日期早于今天,则应下载新文件(因为它将有新数据)。如果不是,那么不应该下载新文件,并且相关计算器(实质上是我的应用程序)应该使用上次下载的文件作为特定的股票代码。如何仅从服务器下载新文件?
我已经做了一些Google搜寻并找到了Apache POI项目。
这是最好的方式,是否有更好的方法,你会推荐什么。 JNI在这里与所有相关吗?
我有一些CSV文件,我想每天从雅虎财经下载。我希望我的应用程序读取文件的创建日期(在我的计算机上,而不是服务器上)。如果创建日期早于今天,则应下载新文件(因为它将有新数据)。如果不是,那么不应该下载新文件,并且相关计算器(实质上是我的应用程序)应该使用上次下载的文件作为特定的股票代码。如何仅从服务器下载新文件?
我已经做了一些Google搜寻并找到了Apache POI项目。
这是最好的方式,是否有更好的方法,你会推荐什么。 JNI在这里与所有相关吗?
您是否考虑创建FTP帐户以访问该特定文件夹,然后使用FTP客户端(如SmartFTP或FileZilla)将本地文件夹与远程文件夹同步?应该很容易设置,也方便使用...此外,你可以简单地创建一个FTP命令脚本,并执行从Java代码,如果绝对必要的...
或者我会尝试点你进入另一个方向:md5()或其他消息摘要算法可以帮助你。你不必依靠时间戳。尝试计算您所拥有的文件和即将下载的文件的md5()散列值。然后你知道是否要下载。
我可能会错过一些东西,但我看不出为什么需要JNI或POI来下载文件。 如果您使用HTTP下载文件,则可以使用带有“If-Modified-Since”请求标头的HttpURLConnection。
JNI绝对不相关,Apache POI也是如此,除非创建日期存储在文件本身(不太可能)。否则,它是外部元数据,可以通过HTTP头访问(可能使用纯Java),或者根本不可访问。
我有很多的,我 想从雅虎下载的每一天资金 CSV文件。我想让我的应用程序以 读取文件的创建日期(在我的 计算机上,而不是服务器上)。如果 创建日期早于今天,则 应下载新文件(因为 它将具有新数据)。
为了检测对本地文件的更改,您需要文件的最后修改日期,该日期比此类检查的创建日期更通用(因为它也显示文件发生更改后创建)。
您可以通过使用
public long lastModified()
方法的文件对象上获取Java编写的。
请注意,没有方法可以在File API中获取创建日期,可能是因为此信息在所有文件系统中都不可用。
如果绝对需要有一个文件创建日期,然后(如果你自己创建的文件,也可以让那些谁做),你可以按照约定在文件名中编码的创建日期,就像这样:myfile_2009_04_11 .csv格式。然后你将不得不分析文件名并确定创建日期。
我做了一些谷歌上搜索,并发现 了Apache POI项目。这是 最好的办法,有没有更好的 方式,你会推荐什么。
Apache POI项目是一个用于读写MS Office文件(在这种情况下为Excel文件)的库。 CSV是一种简单的文本格式,因此您不需要POI来阅读它。
此外,您需要的信息(创建日期或上次修改日期)可作为文件本身的元数据使用,而不是文件的数据中,因此您不需要POI即可获取它。
JNI与此相关吗?
理论上,您可以使用自定义的JNI扩展(桥接本地代码)来获取支持它的文件系统的创建日期。
但是,最好使用Java SDK API中已存在的可移植最后修改日期和/或“文件名中编码的创建日期”约定。
使用JNI会让你的程序不能移植,因为没有真正的附加好处。
我没有很好地解释这个问题,很抱歉。但看起来我们得到了一个解决方案,感谢那些回答。 – Ankur 2009-04-12 09:55:32