我想使用 Java 来获取上次修改时间和 HTTP 服务器上文件的创建时间。该文件位于特定 URL 中。使用 URLConnection
和 HttpURLConnection
的方法从 HTTP 标头生成"上次修改时间"属性,但这不是文件的实际创建日期。
我一直在读Apache Tika是这项工作的图书馆。但是,我无法找到一个可以做我想做的事的工作示例。最接近的例子也许在这里。但是当我运行该帖子中给出的代码时,它不会产生上次修改的属性。
我正在使用此答案中给出的部分方法,我认为该方法可能有效,但目前没有打印任何内容。
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
URI u = new URI("https://sec.gov/Archives/edgar/full-index/2015/QTR4/master.idx");
InputStream is = new BufferedInputStream(new FileInputStream(new File(u)));
parser.parse(is, handler, metadata, new ParseContext());
System.out.println("Creation Date" + metadata.get(Metadata.CREATION_DATE));
System.out.println("Last Modified Date" + metadata.get(Metadata.LAST_MODIFIED));
当您使用 URLConnection 下载文件时,HTTP 标头对 Tika 是隐藏的。
Tika 在这里可以读取的所有内容都与您保存文件并在其上打开流时相同
这意味着创建日期和上次修改日期将是保存文件时使用的日期和上次修改日期(与使用操作系统浏览器[Windows资源管理器,nautilus...]看到的相同)。
如果您需要读取该文件上的HTTP标头,请不要使用Tika,而是直接使用HTTPUrlConnection
或任何其他HTTP客户端,例如(https://hc.apache.org/httpcomponents-client-4.5.x/)或其他问题中提出的方法。