2017-01-10 6 views
0

Javaを使用して、HTTPサーバー上のファイルの最終変更時刻と作成時刻を取得します。ファイルは特定のURLにあります。 URLConnectionHttpURLConnectionを使用するメソッドは、HTTPヘッダーからLast-Modified属性を生成しますが、これはファイルの実際の作成日ではありません。Java/Apache Tika:URLからファイルの最終変更/作成属性を取得する方法

私はこれを読んでいます。Apache Tikaは仕事のためのライブラリです。しかし、私は私が望むことをする実際の例を見つけることができませんでした。最も近い例はおそらくhereです。しかし、その投稿に与えられたコードを実行すると、最後に変更された属性が返されません。

私は部分的にはthisに記載されているアプローチを使用していますが、これはうまくいくと思われますが、現在は何も印刷していません。

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)); 

答えて

0

URLConnectionを使用してファイルをダウンロードすると、HTTPヘッダーはTikaから非表示になります。

ティカはここで読むことができるものすべてが同じ(あなたがあなたのファイルを保存し、それ

にストリームを開いていた場合には、ファイルを保存するときに修正作成日と最後に使用したものになることを意味するよりも、同じですあなたのOSブラウザ[Windowsエクスプローラ、ノーチラス...]を使って見ることができます)。

そのファイルだけでHTTPヘッダーを読む必要がある場合は、Tikaは使用せず、HTTPUrlConnectionやその他のHTTPクライアント(https://hc.apache.org/httpcomponents-client-4.5.x/)やthis other questionで提案されている方法を直接使用してください。

+0

私は元の投稿にリンクされたその最後の回答を持っていました。私は、その質問の作者が最初に示した例を使用したいと思いますが、彼の例では、実行時にLast Modified属性が与えられませんでした。 HTTPヘッダーは、ファイルの作成に関する正しい情報を返すようには見えないので、私はTikaを使用しようとしています。 – jshapy8

+0

答えの最初の例のように、ファイルのメタデータを取得します。 – jshapy8

+0

しかし、私が言ったように、Tikaはあなたが読むことを望むHTTPヘッダー情報にアクセスしません。ファイル自体からメタデータを抽出します。そしてidxファイルはTikaによって処理されないので、内部の情報を読み取ることはできません(単純なtxtファイルのため、docやpdfなどのメタデータは含まれません)。 – YMomb

関連する問題