Hallo, ich hätte mal eine Frage wegen der Klasse Input Stream.
Also ich soll eine Methode schreiben, mit der ich einen InputStream auslese und anschließend Strings in eine Liste schreibe. Die Methode ist vorgegeben mit :
Java:
publicstaticCsvread(InputStream input){}
Also es wird ein InputStream übergeben, den ich dann auswerten soll und anschließend einzelne Strings in eine Liste der Klasse Csv schreiben soll.
Mein probem ist jetzt der InputStream. Ich muss diesen ja in einen String umwandeln und dann mittels z.B Scanner aufteilen und abspeichern. Dies wollte ich mithilfe des StringBuilders machen. Soweit so gut. Da ich recht am Anfang meiner Java Laufbahn stehe, würde ich gerne Testen wie denn dann das Ergebnis aussieht.
Deshalb brauch ich einen InputStream, den ich der Methode übergeben kann. Und genau da liegt das Problem. Ich wollte nun eine Datei mit Text einlesen und diese als InputStream der Methode übergeben. Nur leider weis ich nicht wie ich denn von der Datei zu einem InputStream komme. Wenn ich mit File die Datei einlese ist es ja ein File, und mit Reader ist es auch kein InputStream. Kann mir da jemand helfen ? ;-)
bitte mal API lesen , google fragen ... und "Java ist auch eine Insel" durchgehen ...
wenn du schon mit java.util.Scanner arbeiten willst ... dann übergib diesem doch einfach den referenzierten inputstream ...
wobei auch der returntype "Csv" mir nicht ganz geheuer sein will ...
weil dann kannst du nicht einfach String returnen ... sondern ein objekt vom type "Csv"
Meist möchte man den Zugriff auf die Datei puffern, um unnötige Festplattenzugriffe zu vermeiden. Das macht man durch sog. "Dekorieren" mit einem BufferedInputStream. Das sieht dann so aus:
Java:
InputStream bis =newBufferedInputStream(newFileInputStream("pfad/zur/datei"));
Habe bereits api und google durch, leider ohne große erfolge.
Ich les nur immer dass ich für zeichen-Streams einen Reader benutzen soll, und der InputStream nur für andere.
Wenn ich aber nun einen Reader benutze, kann ich es nicht in die Methode übergeben, da ja ein InputStream gewünscht ist
Ja das hab ich wohl unverständlich geschrieben. Ich will keinen String zurückliefern, sonder ein Objekt der Klasse Csv, das eine Liste is. Ich will also nur den Inputstream in Strings aufteilen, die ich dann in eine "Tabelle" von der Klasse CSV schreibe.
Das stimmt. Insofern ist die Aufgabenstellung etwas doof. Wenn man eine Methode hat, die nachweislich irgendwie mit Strings und Zeichen arbeitet als Übergabeparameter InputStream zu definieren. Aber egal, so isses eben. Du kannst den Übergebenen InputStream einfach ganz naiv nutzen, um daraus einen Reader zu machen. Wenn der InputStream keine Characters, sondern Binary-Data liefert, ist es eben Pech.
In Deiner read-Methode könnte Deine erste Zeile dann bspw. so aussehen.
Meist möchte man den Zugriff auf die Datei puffern, um unnötige Festplattenzugriffe zu vermeiden. Das macht man durch sog. "Dekorieren" mit einem BufferedInputStream. Das sieht dann so aus:
Java:
InputStream bis =newBufferedInputStream(newFileInputStream("pfad/zur/datei"));
du weist schon das es [c]Scanner(InputStream)[/c] gibt oder ?
wenn deine signatur vorgegeben ist dann einfach [c]Scanner scanner=new Scanner(input)[/c] und schon kannst du mit einem Scanner aus dem übergebenen inputstream lesen ...