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




Дата хранится в данных EXIF в формате jpeg. Есть библиотека Java и просмотрщик в java, которые могут быть полезны.
Вероятно, вам нужно что-то для доступа к данным exif. Google предлагает эта библиотека.
Я использую эту библиотеку метаданных: http://www.drewnoakes.com/code/exif/
Кажется, работает довольно хорошо, хотя имейте в виду, что не все изображения JPEG имеют эту информацию, поэтому она не может быть на 100% надежной.
Если метаданные EXIF не содержат дату создания, вам, вероятно, придется обойтись Java lastUpdated - если вы не хотите прибегать к Runtime.exec (...) и использовать системные функции для выяснения (я бы не стал) Я не рекомендую это, тем не менее!)
Информация хранится в изображении в формате, называемом EXIF или текст ссылки. Есть несколько библиотек, способных читать этот формат, например Вот этот
Большой! Спасибо за все полезные комментарии! Думаю, я воспользуюсь библиотекой на drewnoakes.com.
Формат файла сменного изображения (официально Exif, не EXIF в соответствии со спецификациями JEIDA / JEITA / CIPA) - это стандарт, который ...
В приведенном ниже примере кода у пользователя запрашивается путь к файлу, а затем выводятся дата и время создания:
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();}
}
}
Спасибо за фрагмент кода, но мне действительно нужно получить дату из метаданных изображения, а не из файловой системы.
Да, это сработало для некоторых моих изображений и не сработало для данных изображений, хранящихся в нашей базе данных.