Como identificar o tipo do arquivo, ou seja, validar se ele é mesmo um .doc, .bmp

Salve salve galera.

Tenho que estar identificando/validando os arquivos em minha aplicação.

Pesquisei um pouco e percebi que posso pegar o mime type do arquivo e identificar o mesmo. Mas não posso fazer isso somente validando a extensão do arquivo, mesmo pq o usuário pode agir de má fé e mudar.

Eu encontrei um API JMimeMagic .

Aparentemente ela entra dentro do arquivo e verifica o mime-type, porém ela não está muito estável…

Alguém tem alguma idéia de como posso estar fazendo isso.

Ou falar o caminho das pedras de como ler o arquivo e recuperar o tipo dele.

Se você já usou o Unix/Linux, deve saber que existe um comando (“file”) que chuta qual é o tipo de um arquivo. Por exemplo:

[thingol@beleriand:~]$ file TestManagement.java
TestManagement.java: ASCII Java program text
[thingol@beleriand:~]$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped

Ele usa um arquivo chamado /usr/share/file/magic (para mais detalhes, “man magic” e “man file” podem lhe dizer isso.)

Olhe a documentação do comando “file” para entender o que ele faz.

Deve haver um “port” desse comando “file” para Java. É questão de procurar.

[quote=thingol]Se você já usou o Unix/Linux, deve saber que existe um comando (“file”) que chuta qual é o tipo de um arquivo. Por exemplo:

[thingol@beleriand:~]$ file TestManagement.java
TestManagement.java: ASCII Java program text
[thingol@beleriand:~]$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped

Ele usa um arquivo chamado /usr/share/file/magic (para mais detalhes, “man magic” e “man file” podem lhe dizer isso.)

Olhe a documentação do comando “file” para entender o que ele faz.

Deve haver um “port” desse comando “file” para Java. É questão de procurar.

[/quote]

E em windows…como seria feito para obter esse tipo de detalhe do arquivo???teria que usar aquela API que o amigo mostrou acima???

A Dúvida é como fazer isso em java.

Alguem tem alguma idéia…?

bom, acho que o jMimeMagic é o mais fácil mesmo.

caso você queira implementar seu próprio sistema, talvez este site te ajude: http://www.wotsit.org/

dudaskank

Vc já mexeu com o Jmimemagic