Как получить изображение даты, созданное в Java
Вопрос
Я хотел бы извлечь дату создания файла jpg.В Java есть метод LastModified для объекта File, но он не поддерживает извлечение даты создания из файла.Я считаю, что информация хранится в файле, поскольку дата, которую я вижу, когда навожу указатель мыши на файл в Win XP, отличается от той, которую я могу получить, используя JNI с «dir /TC» для файла в DOS.
Решение
Информация хранится внутри изображения в формате, называемом EXIF или текст ссылки.Существует несколько библиотек, способных читать этот формат, например Вот этот
Другие советы
Дата сохраняется в EXIF данные в формате jpeg.Есть Java-библиотека и просмотрщик в Java это может быть полезно.
Я использую эту библиотеку метаданных: http://www.drewnoakes.com/code/exif/
Кажется, работает довольно хорошо, хотя имейте в виду, что не все изображения JPEG содержат эту информацию, поэтому она не может быть на 100% надежной.
Если метаданные EXIF не содержат дату создания, то вам, вероятно, придется обойтись последним обновлением Java - если только вы не хотите прибегнуть к Runtime.exec(...) и использовать системные функции для выяснения (я бы не стал хотя не рекомендую!)
В приведенном ниже примере кода у пользователя запрашивается путь к файлу, а затем выводятся дата и время создания:
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();}
}
}
Вероятно, вам нужно что-то для доступа к exif данные.Google предлагает эта библиотека.