Как получить изображение даты, созданное в Java - PullRequest
9 голосов
/ 17 сентября 2008

Я хотел бы извлечь дату, когда был создан файл jpg. Java имеет метод lastModified для объекта File, но, по-видимому, не обеспечивает извлечения даты создания из файла. Я полагаю, что информация хранится в файле, так как дата, которую я вижу, когда наведите указатель мыши на файл в Win XP, отличается от той, которую я могу получить, используя JNI с "dir / TC" для файла в DOS.

Ответы [ 5 ]

11 голосов
/ 17 сентября 2008

Информация хранится в изображении в формате EXIF ​​ или текст ссылки . Есть несколько библиотек, способных читать этот формат, например this

6 голосов
/ 17 сентября 2008

Дата сохраняется в данных EXIF ​​ в формате JPEG. В java есть библиотека java и средство просмотра , которые могут быть полезны.

4 голосов
/ 17 сентября 2008

Я использую эту библиотеку метаданных: http://www.drewnoakes.com/code/exif/

Кажется, работает довольно хорошо, хотя имейте в виду, что не все изображения JPEG имеют эту информацию, поэтому она не может быть на 100% надежной.

Если метаданные EXIF ​​не содержат дату создания, вам, вероятно, придется обойтись последним обновлением Java - если только вы не захотите прибегнуть к Runtime.exec (...) и использовать системные функции для выяснения Я не рекомендовал бы это, хотя!)

0 голосов
/ 17 сентября 2008

В приведенном ниже примере кода пользователь запрашивает путь к файлу, а затем выводит дату и время создания:

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();}
    }
}
0 голосов
/ 17 сентября 2008

Вам, вероятно, нужно что-то для доступа к данным exif . Google предлагает эту библиотеку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...