"Ausgangspunkt" eines Streams ändern

Nimmer

Grünschnabel
Hallo zusammen,

vor kurzem habe ich ein kleines Programm geschrieben das eine Datei aus dem Internet, auf meinem Rechner speichert. Der Code sah so ähnlich aus wie dieser hier:

Code:
URL url = new URL("http://foo.bar");
InputStream is = url.openStream();
File out = new File("foo.bar");
FileOutputStream fos = new FileOutputStream(out);
int oneChar;
while ((oneChar=is.read()) != -1)
{
    fos.write(oneChar);
}
is.close();
fos.close();

Meine Frage ist jetzt, ob es eine Möglichkeit gibt, den selben Stream zu verwenden um eine andere Datei herunter zu laden. Also die URL zum Beispiel auf "http://foo2.bar" zu ändern. Die gleiche Frage interessiert mich auch im Bezug auf den OutputStream, kann ich ihm sagen, dass er in eine andere Datei schreiben soll?

Schon mal vielen Dank im Voraus.
Nimmer
 
Hi,

also meines erachtens nach geht das nicht. Du musst für jede Datei einen neuen Stream, sowohl Input- als auch Output-Stream, öffnen. Warum willst du denn auch alles über einen In-/Outputstream machen?

Gruß

Fabio
 
Laut HTTP/1.1 Spezifikation ist es durchaus möglich EINE Verbindung für eine Reihe von Daten zu verwenden ... aber das ist ein ganz schön kompliziertes Thema und wird noch lange nicht von jedem Server unterstützt.

btw : bei HTTP-Daten IMMER URL.getConnection() verwenden und die erhaltene URLConnection mit instanceof HttpURLConnection checken. Bei einer einfach Stream-Connection kann es schnell zu Problemen kommen.
 
Meine Güte, ihr seid vielleicht schnell!

Schonmal danke für eure Antworten.
@Fabio: Bisher habe ich mich noch nicht so sehr mit dem Thema beschäftigt, und bei der Suche im Internet bin ich immer auf Streams gestoßen, daher dachte ich es wäre das übliche Vorgehen.
 
Ja ... das ist schon richtig das sowas im Endeffekt über Streams geht ... allerdings sollte man Vorhandenes nicht ignorieren um es sich nicht unnötig kompliziert zu machen.
Wir hatten erst vor kurzem etwas ähnliches bei dem der User auch nur openStream() verwendete. Das Problem war jedoch das der von ihm gewählte Dienst einen User-Agent erwartete ... den man so nicht setzen kann. Eine HttpURLConnection macht sowas baer möglich. Auch kannst du damit z.B. Session-Cookie abfragen und setzen ...
Alles in Allem ist sowas dann doch einfacher als alles RAW mit Streams zu machen.
 

Neue Beiträge

Zurück