Hallo,
ich versuche schon die ganze Zeit zu testen, ob eine bestimmte (Bild)Datei vorhanden ist. Die Datei liegt allerdings auf dem Server, also mit File-Objekten geht da ja meines Wissens nix.
Ich hab schon mit allen möglichen InputStreams rumprobiert, aber noch nicht die richtige Lösung entdeckt.
Wenn ich einen InputStreamReader erstelle und die Methode read() aufrufe, dann kommt ja sogar ein int-Wert zurück, wenn die Datei garnicht existiert?!? Aber nicht -1, sondern 60 wars glaub ich.
Wenn ich einen BufferedReader erstelle und einmal readLine() aufrufe und dann read(), so liefert dieses -1, wenn die Datei nicht vorhanden ist. Is ja schonmal was. Aber lese ich dann mit readLine() das ganze Bild ein, falls es vorhanden ist? Das will ich natürlich nicht, will nur wissen, obs da ist.
Bin für jeden Tip dankbar.
Ciao
Jochen
Hallo!
Du koenntest mit
myBuffRead.ready()
pruefen,
ob der BufferedReader gelesen werden kann (gibt boolean zurueck).
Gruss
Patrick
Jetzt weiß ich auch, was der liest…
Hallo nochmal,
erstmal danke für die schnelle Antwort. Aber das funzt nicht 
jetzt weiß ich auch, was der liest, wenn die Datei nicht existiert. Wenn ich beim BufferedReader ein readLine() mache, erhalte ich den HTML-Quelltext der „Error 404“-Seite.
Also eben die Seite, die kommt, wenn die gesuchte Datei nicht vorhanden ist. Das heißt, bei buffer.ready() kommt immer true zurück, weil er ja was liest. Is dem ja ziemlich egal, was das ist.
Gruß
Jochen
Erstmal hast du dein Problem ziemlich schlecht beschrieben, wie hätte man dir da eigentlich helfen sollen, da stand nirgends dass es um einen HTTP Server geht oder dass du checken möchtest dass die Webseite existiert.
OK nun bist du natürlich an einem Problem: Der Webserver schickt dir auch wenn die Seite nicht existiert eine Seite (nämlich die Fehlermeldung). WIe liest du denn die Seite überhaupt ein? Bzw. wie öffnest du diesen Stream? Wenn du irgendwie an den HTTP-Header rankommst, der vom Server zurückkommt, könntest du checken ob dort der Fehlercode 404 drinnensteht, aber evtl. wird der HTTP Header schon entfernt bevor du überhaupt mit lesen beginnst.
Grüße
Bruno
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Erstmal hast du dein Problem ziemlich schlecht beschrieben,
wie hätte man dir da eigentlich helfen sollen, da stand
nirgends dass es um einen HTTP Server geht oder dass du
checken möchtest dass die Webseite existiert.
OK nun bist du natürlich an einem Problem: Der Webserver
schickt dir auch wenn die Seite nicht existiert eine Seite
(nämlich die Fehlermeldung). WIe liest du denn die Seite
überhaupt ein? Bzw. wie öffnest du diesen Stream? Wenn du
irgendwie an den HTTP-Header rankommst, der vom Server
zurückkommt, könntest du checken ob dort der Fehlercode 404
drinnensteht, aber evtl. wird der HTTP Header schon entfernt
bevor du überhaupt mit lesen beginnst.
Grüße
Bruno
Aaaaalso,
ich hab die URL von einem Bild (z.B.: www.wasweisichwo.de/bilder/bild.gif). Das Bild liegt auf einem Server, auf dem Apache/Tomcat läuft. Jetzt möchte ich einfach feststellen, ob dieses Bild wirklich auf dem Server existiert. Der Mechanismus ist eigentlich egal.
Bis jetzt hab ichs so probiert:
URL url = new URL(strPicURL);
BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream() ) );
System.out.println("ready: "+in.ready());
System.out.println("readLine: "+in.readLine());
Bei in.ready() kommt immer true raus, ob das Bild existiert oder nicht und bei in.readLine() liest er wie oben erwähnt den HTML-Code der 404-Seite. Obwohl die URL direkt auf ein gif-Bild zeigt.
Gruß
Jochen