Como chegar imagem data criada em java
Pergunta
Eu gostaria de extrair a data de um arquivo jpg foi criado. Java tem o método lastModified para o objeto de arquivo, mas parece fornecer nenhum apoio para extrair a data de criação do arquivo. Eu acredito que a informação é armazenada dentro do arquivo como a data que vejo quando passa com o cursor do mouse sobre o arquivo no Win XP é diferente do que eu posso começar usando JNI com "dir / TC" no arquivo em DOS.
Solução
A informação é armazenada dentro da imagem em um formato chamado EXIF ?? ou link texto . Há várias bibliotecas lá fora capaz de ler este formato, como esta
Outras dicas
A data é armazenada nos EXIF ?? dados no jpeg. Há um java biblioteca e uma espectador em java que pode ser útil.
Eu uso esta biblioteca metadados: http://www.drewnoakes.com/code/exif/
parece funcionar muito bem, embora tenha em mente que nem todas as imagens JPEG tiver essa informação, por isso não pode ser 100% à prova de idiota.
Se os metadados EXIF ??não contém a data de criação, então você provavelmente vai ter que se contentar com lastUpdated de Java - a menos que queira recorrer a Runtime.exec (...) e usando as funções do sistema para descobrir ( Eu não recomendo este, embora!)
O exemplo de código abaixo pede ao usuário para um caminho de arquivo e, em seguida, envia a data e hora de criação:
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();}
}
}
Você provavelmente precisa de algo para acessar os EXIF ?? dados. Google sugere esta biblioteca .