Mime.types einlesen / durchsuchen

HentaiD

Mitglied
Hallo Freunde,
ich habe einen Webserver programmiert, der auch ganz gut läuft.
Der Browser soll nun den Mime-Type der angefragten Datei wiedergeben:

Anfrage "http://127.0.0.1:6789/bla.atom" soll die Ausgabe "200 Found Content-type: application/atom+xml" ausgeben.

Jetzt weiß ich nicht ganz wie ich es angehen soll.
Ich habe eine Datei mit den Typen gegeben. Die ersten 28 Zeilen sind Kommentare, dann folgen die Typen zeilenweise:

...
application/mathematica nb nbp
application/ms-tnef
application/msaccess mdb
...

Ich weiß nicht, ob es eine forgefertige Funktion in java gibt, die externe Mime-Dateien zeilenweise auslesen können und den Typen zurückgeben können. Falls ja, super! habe nur ähnliche Methoden per Google gefunden, aber funktionierte nie so ganz, wie es sollte.

Ansonsten muss ich die Datei wohl einlesen und durchsuchen.
Jetzt ist mir nur nicht ganz klar wie ich (am besten performant: eine Schleife) die Datei so durchsuchen kann, dass ich eindeutig die File-Extension finde und den eben zugehörigen Mime-Typen ausgebe, da ja auch alles in der gleichen Zeile steht. :(

Habt ihr da vll. einen Ansatz für mich, da ich recht neu in Java bin.

Mein Ansatz sieht so aus:

Code:
String searchString = fileName;
		File file = new File("mime.types");
		FileReader freader = new FileReader(file);
		BufferedReader reader = new BufferedReader(freader);

while(true)
		{
			String line = reader.readLine();
			if(line != null)
			{
				if(line.indexOf(searchString) > -1)
				{
					// FOUND
				}
			}
			else {
				return "application/octet-stream";
			}
		}


Problem:
Die Schleife durchsucht alles. Könnte ja gut sein, dass bei einer Suche nach "app" ich direkt einen treffer lande bei "application/andrew-inset ez".
Problematisch ist auch die Suche, wenn ein typ keine Dateiendung hat.
Und last but not least: Wie gebe ich dann den ersten Teil der Zeile aus?

Herrje ich hoffe ich überfordere euch nicht, ich bin's jedenfalls. =)

Danke im Vorraus und liebe Grüße, D


edit: Da die Zeilenlänge der Datei immer gleich ist, würde ich das ganze gerne per for-Schleife lösen, da die ersten 28 Zeilen eh irrelevant sind und nur beim Suchen stören.
 
Zuletzt bearbeitet:
Hi,

habe auf die Schnelle folgendes bei Google gefunden:
http://www.rgagnon.com/javadetails/java-0487.html

Falls dir das nicht weiterhilft, dann würde ich eine Klasse machen, welche die Mime-Operationen für dich durchführt. Im Konstruktor gibst du den Dateipfad an, die Klasse lädt die Datei dann in seine Attribute. Dann machst du noch ne Funktion "String getMimeType(String)", welche an Hand der Endung der angegeben Datei dann den Mimetype raussucht.

Das Ganze solltest du eigentlich mit einer HashMap erledigen können.

Gruß
BK
 
Zurück