Java, mimetype einer Datei?
Hallo,
kennt jemand ein gutes Java Tool, mit dem man den Mimetype einer Datei erkennen kann?
Ich habe es mit javax.activation versucht, aber das funktioniert recht unzuverlässig. Wichtig wäre mir vor allem, dass es recht schnell geht, man also bei 100 zu prüfenden Dateien nicht ne halbe Minute warten muß.
Dank euch für jeden Vorschlag.
kennt jemand ein gutes Java Tool, mit dem man den Mimetype einer Datei erkennen kann?
Ich habe es mit javax.activation versucht, aber das funktioniert recht unzuverlässig. Wichtig wäre mir vor allem, dass es recht schnell geht, man also bei 100 zu prüfenden Dateien nicht ne halbe Minute warten muß.
Dank euch für jeden Vorschlag.
Die meisten Dateien haben in den ersten zwei bis 4 bytes eine art Fingerabdruck.
Zip dateien haben zum beispiel 4 Bytes signaturen.
00000010
00000001
01001011
01010000
Das ist auf 99% aller Dateien anwendbar.
http://lmgtfy.com/?q=zip+header+signature
Zip dateien haben zum beispiel 4 Bytes signaturen.
00000010
00000001
01001011
01010000
Das ist auf 99% aller Dateien anwendbar.
http://lmgtfy.com/?q=zip+header+signature
[..] ersten zwei bis 4 bytes [..]
darin besteht ja schon mal das Problem, man müßte also für jedes Format eine eigene Abfrage schreiben.
Mir ging es vor allem darum, dass ich nicht jedes mögliche Format selbst implementieren muß, sondern auf eine Bibliothek zugreifen kann.
Wie gesagt, javax.activation bietet so etwas, allerdings manchmal unzuverläßlich. Deshalb bin ich auf der Suche nach einer Alternative.
darin besteht ja schon mal das Problem, man müßte also für jedes Format eine eigene Abfrage schreiben.
Mir ging es vor allem darum, dass ich nicht jedes mögliche Format selbst implementieren muß, sondern auf eine Bibliothek zugreifen kann.
Wie gesagt, javax.activation bietet so etwas, allerdings manchmal unzuverläßlich. Deshalb bin ich auf der Suche nach einer Alternative.
Hallo,
der Absatz Magische_Zahlen_zur_Kennzeichnung_von_Dateitypen aus Wikipedia schlägt in die gleiche Kerbe wie der Beitrag von Nocturne. Außer das die Magische Zahl auch mal über 100Bytes haben kann.
Und hier noch ein Ansatz (keine Fertige Bibliothek):
Unter Linux gibt es das Programm File das den MIME-Typ einer Datei erkennen kann, soweit ich weis arbeitet es mit diversen Dateien in denen die Definitionen dazu drinnen stehen. Vielleicht kannst du das ja für deine Arbeit nutzen.
weiterführende Links dazu:
manpage - file command's magic number file
file signatures table
Gruß
Ego
der Absatz Magische_Zahlen_zur_Kennzeichnung_von_Dateitypen aus Wikipedia schlägt in die gleiche Kerbe wie der Beitrag von Nocturne. Außer das die Magische Zahl auch mal über 100Bytes haben kann.
Und hier noch ein Ansatz (keine Fertige Bibliothek):
Unter Linux gibt es das Programm File das den MIME-Typ einer Datei erkennen kann, soweit ich weis arbeitet es mit diversen Dateien in denen die Definitionen dazu drinnen stehen. Vielleicht kannst du das ja für deine Arbeit nutzen.
weiterführende Links dazu:
manpage - file command's magic number file
file signatures table
Gruß
Ego
Warum verwirfst du das so schnell?[..] ersten zwei bis 4 bytes [..]
darin besteht ja schon mal das Problem, man müßte also für jedes Format eine eigene Abfrage schreiben.
Mir ging es vor allem darum, dass ich nicht jedes mögliche Format selbst implementieren muß, sondern auf eine Bibliothek zugreifen kann.
Wie gesagt, javax.activation bietet so etwas, allerdings manchmal unzuverläßlich. Deshalb bin ich auf der Suche nach einer Alternative.
Wie wäre es wenn du eine neue Tabelle erstellst mit zwei Feldern, signatur und mime-typ.
Dann kommst du mit einfachem Left-Join den mime-type ranziehen.
Schneller, Einfacher, stabiler gehts nicht.
Geh mal googlen. ich wette irgendjemand hat schon so ne tabelle erstellt.
Zitat
Wie wäre es wenn du eine neue Tabelle erstellst mit zwei Feldern, signatur und mime-typ.
Klar geht das. Aber genau das wollte ich ja vermeiden. Wie man an dem link von Ego sieht, ist das ja nicht trivial, immerhin gibt haben die Signaturen unterschiedliche Längen und sind bisweilen Teilmengen von einander. Wenn man das also selbst realisiert, hat man schnell eine umfangreiche Bibliothek am Hals.
Außerdem bezweifle ich, dass eine solche Eigenbau-Lösung auf Basis der Signaturen zuverlässiger arbeiten würde als die in javax.activation schon enthaltene.
Momentan verwende ich die erwähnte Funktion aus javax.activation. Weitere Vorschläge für Alternativen sind natürlich gern gesehen.
Ähnliche Themen
-
Sonstige Programmiersprachen »-
PDFlib unter Java
(6. Juli 2007, 11:08)
-
Sonstige Programmiersprachen »-
Integration Eclipse
(17. August 2006, 15:40)
-
PHP »-
Chat programmieren?
(22. Februar 2004, 21:31)
-
PHP »-
Tut für Art Web-FTP per Java?
(2. Juni 2003, 17:58)
-
(X)HTML & CSS & DHTML & Javascript »-
JavaScript - Quellcode verbergen
(19. Dezember 2002, 22:47)


