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.

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top