10

jpgファイルが作成された日付を抽出したいと思います。Java には File オブジェクトの lastModified メソッドがありますが、ファイルから作成日を抽出するためのサポートを提供していないようです。Win XP でマウス ポインタをファイルに合わせたときに表示される日付は、DOS でファイルに "dir /TC" を指定して JNI を使用して取得できる日付とは異なるため、情報はファイル内に保存されていると思います。

4

5 に答える 5

12

情報は、 EXIFまたはリンク テキストと呼ばれる形式で画像内に保存されます。この形式のように、この形式を読み取ることができるライブラリがいくつかあります

于 2008-09-17T14:32:26.467 に答える
6

日付はjpegのEXIFデータに格納されます。役立つかもしれないJava ライブラリと Java のビューアーがあります。

于 2008-09-17T14:27:34.950 に答える
4

このメタデータ ライブラリを使用します: http://www.drewnoakes.com/code/exif/

すべての JPEG 画像にこの情報が含まれているわけではないため、100% 絶対確実というわけではないことに注意してください。

EXIF メタデータに作成日が含まれていない場合は、Runtime.exec(...) に頼り、システム関数を使用して調べる場合を除き、おそらく Java の lastUpdated で間に合わせる必要がありますただし、これはお勧めしません!)

于 2008-09-17T14:30:41.637 に答える
0

おそらく、 exifデータにアクセスするために何かが必要です。Google はこのライブラリを提案しています。

于 2008-09-17T14:28:23.310 に答える
0

以下のコード例では、ユーザーにファイル パスを尋ね、作成日時を出力します。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(final String[] args) {
        try {
            // get runtime environment and execute child process
            Runtime systemShell = Runtime.getRuntime();
            BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter filename: ");
            String fname=(String)br1.readLine();
            Process output = systemShell.exec("cmd /c dir /a "+fname);
             // open reader to get output from process
            BufferedReader br = new BufferedReader (new InputStreamReader(output.getInputStream()));

            String out="";
            String line = null;

            int step=1;
             while((line = br.readLine()) != null ) 
              {
                 if(step==6)
                {
                out=line;
                }
                 step++;
                 }          // display process output

            try{
            out=out.replaceAll(" ","");
            System.out.println("CreationDate: "+out.substring(0,10));
            System.out.println("CreationTime: "+out.substring(10,15));
            }
            catch(StringIndexOutOfBoundsException se)
            {
                System.out.println("File not found");
            }
            }
          catch (IOException ioe){ System.err.println(ioe); }
          catch (Throwable t) { t.printStackTrace();}
    }
}
于 2008-09-17T14:38:01.057 に答える