Dateiart erkennen

  • Themenstarter Themenstarter scooterJava
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

scooterJava

Gast
Mit Java (und auch mit C, C++, ...) kann ich ja nicht erkennen, welchen Dateityp eine Datei hat, wenn ich nicht die Dateiendung zuhilfe nehmen will oder prüfe, ob eine bestimmte Signatur vorhanden ist.

Aber gibt es eine Möglichkeit zu prüfen, ob ich eine Binär- oder Textdatei vorliegen habe? Ich dachte schon daran, beispielsweise die ersten 100 Bytes zu prüfen, ob einige Zeichen aus einem Codebereich oberhalb des Alphabets vorkommen. Dann fiel mir ein: Es gibt ja auch Unicode ...
 
@Leroy: Das ist dann genau der Ansatz... Nicht jede Binärdatei ist eine Text-Datei
Zuerst versuchen, die Datei mit einem "Reader" zu lesen, eine eventuelle Exception abfangen und anschliessend einen "InputStream" verwenden. Natürlich muss dem Reader vorher gesagt werden, welcher Zeichensatz verwendet werden soll, weil er sonst gnadenlos auch alles Binäre in einen (dann mehr oder weniger unleserlichen) String einliest.

mfg Spacerat
 
Code:
File file = new File("test");
System.out.println(file.toURI().toURL().openConnection().getContentType());

Hilft das?
 
?
Habs hier mit einer lokalen PNG-Datei ausgeführt (Endung gelöscht) und bekam
Code:
image/png
als Ausgabe.

Oder liegt das mal wieder am Linux ;-)
 
Ariol hat gesagt.:
Oder liegt das mal wieder am Linux ;-)
Ich bin ich überrascht das die Java Implementierung da so clever ist im Falle eines Files den Content Type der Datei vom Dateisystem abzufragen, aber das funktioniert wohl wirklich nur mit Linux, wüsste nicht das Windows Content Types auf Dateisystemebene überhaupt kennt.
 
Wer hätte gedacht was sich da in der URLConnection versteckt:
http://java.sun.com/javase/6/docs/api/java/net/URLConnection.html#guessContentTypeFromStream(java.io.InputStream)
Das wird dabei vermutlich verwendet. Wie akkurat die Ergebnisse sind, mag ich allerdings nicht zu beurteilen.
 
Ich misch mich mal ein...
Ich hoffe da hat noch niemand, um es auszuprobieren, Windows installiert. Wildcard hat den Nagel auf den Kopf getroffen. Das muss man im übrigen nicht ausprobieren. Ein Blick in den Quelltext von "URLConnection" genügt völlig, um Wildcards vermutung zu untermauern.

mfg Spacerat
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben