Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich bin Neu-Einsteigerin von C/C++ nach Java. Ich finde es noch sehr verwirrend, was es in Java alles an Input/Output-Streams und -Readern/Writern gibt. In einer ersten Testaufgabe soll ich den Inhalt einer URL in ein File schreiben. Nun bin ich total verwirrt, ob ich das besser charakterweise mit Reader/Writer oder byteweise mit Input/Outputstreams mache, ob ich gepufferte Streams brauche oder nicht etc. Scheinbar krieg ich den Inhalt der URL zudem nur mit openStream(??), was dann schonwieder was anderes als InputStream oder Reader ist ? Bin dankbar für jede Durchblick-Hilfe!
Reader/Writer sind vor allem beim Lesen und Schreiben von Strings zu gebrauchen, Streams für alles andere, z.B. Objekte, primitive Datentypen und der Gleichen. Auch wenn du im Netzwerk kommunizierst, werden Streams verwendet (zumindest bei den häufig verwendeten Stream-Sockets).
Okay, weil es um beliebige URLs gehen soll und nicht zwangsläufig Text, also den allg. InputStream nehmen? Jetzt soll ich noch irgendwie das charset der HTML-Dateien beachten - wie geht das denn????
Hm, ich hatte etwas geschrieben, wo ich den Durchblick hatte. Dann hat mein Arbeitskollege es überarbeitet und ich hab dabei den Durchblick verloren und jetzt ist er in Urlaub und ich hab meine originale Datei nicht mehr. Hier sein Code:
Wieso kann ich ein "this" an die Schnittstelle OverwriteConfirmer weitergeben? Wieso ist urlinput ein Inputstream und gleichzeitig irgendwie mit dem read-Befehl doch wieder ein Output? Wie muß der OverwriteConfirmer definiert sein? Er hat bisher nur
Code:
import java.io.File;
public interface OverwriteConfirmer {
public boolean mayOverwrite(File file);
}
dafür festgelegt und gesagt, ich soll das noch ergänzen - aber ich weiß nicht wie, was für einen Typ hat so ein Interface überhaupt? Wieso bekommt es ein this übergeben???
was hat denn 'read' mit Output zu tun? ???:L
Input: lesen
Output: schreiben
lava hat gesagt.:
dafür festgelegt und gesagt, ich soll das noch ergänzen - aber ich weiß nicht wie, was für einen Typ hat so ein Interface überhaupt? Wieso bekommt es ein this übergeben???
[Hier kann 'this' übergeben werden, da VonUrlZuDatei OverwriteConfirmer implementiert und damit auch vom Typ OverwriteConfirmer ist.[\quote]
Danke, hilfreiche Antwort!
Wildcard hat gesagt.:
was hat denn 'read' mit Output zu tun? ???[\quote] Sorry, war verwirrt. Bin es immer noch. Meine Realisierung mit Writer/Reader geht jetzt. Versuche es nun mit Streams:
Code:
FileOutputStream fw = new FileOutputStream(filenew);
InputStream liesmichausurl = newurl.openStream();
[\code]
Wie krieg ich nun den Inputstream so umgewandelt, daß ich ihn als Parameter an das FileOutputStream übergeben kann?
byte[] buf=new byte[1024];
int n;
while ((n=urlinput.read(buf))!=-1)
fw.write(buf, 0, n);
bissel sehr kompakte und wenig uebersichtliche schreibweise zudem unter einem methoden namen der nicht ganz passt aber fuer mich sieht es so aus als wuerde er an dieser stelle,
den urlinput lesen,
dem bytearray zuweisen,
mit der -1 pruefen wann das streamende erreicht ist
und solange das nicht der fall ist wirds halt an den fileoutputstream uebergeben.