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.
Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer)
Hey Leute ich hab ein Problem mit meinem code, vielleicht kann mir ja jemand helfen,
ich hab eine txt Datei, die ich an die Methode übergebe, in der sind 5 Zeichenketten drin
513234
503323
502231
612323
615343
Die sollen dann in 3 unterschiedliche Dateien geschrieben werden, entsprechend ihren Zahlen eben.
Es wird aber nur 513234 in eine neue txt Datei geschrieben sonst keine. Wenn ich das array "data" in der Schleife ausgebe dann wird auch nur die erste Zeichenkette ausgegeben, sonst sind sie entweder unvollständig oder nur einzelne Zahlen. Warum ist das so ? und warum funktioniert das nicht ?
Java:
public class split {
public void ssplitStudiengaenge(String dateiname) {
try(InputStream fis = new FileInputStream(dateiname);
Reader isr = new InputStreamReader (fis);
OutputStream fos1 = new FileOutputStream("/Users/jakobg/Desktop/prog2/lektion18.u1/WInfNr.txt");
Writer osw1 = new OutputStreamWriter(fos1);
OutputStream fos2 = new FileOutputStream("/Users/jakobg/Desktop/prog2/lektion18.u1/InfNr.txt");
Writer osw2 = new OutputStreamWriter(fos2);
OutputStream fos3 = new FileOutputStream("/Users/jakobg/Desktop/prog2/lektion18.u1/ECNr.txt");
Writer osw3 = new OutputStreamWriter(fos3);)
{
char[] data = new char[6];
int n;
do {
n = isr.read(data);
if(n!=-1) {
if(data[0]=='5' && data[1]=='0') {
osw1.write(data,0,data.length);
osw1.flush();
}
if(data[0]=='5' && data[1]=='1') {
osw2.write(data,0,data.length);
osw2.flush();
}
if(data[0]=='6' && data[1]=='1') {
osw3.write(data,0,data.length);
osw3.flush();
}
}
}while(n!=-1);
}
catch(IOException e) {
e.printStackTrace();
}
}
}
Hier als erstes ein Tipp: Du kannst Doch Ausgaben hinzufügen. So kann es Sinn machen, vor den 3 if Abfragen einfach einmal data[0] und data[1] auszugeben. Das würde Dir helfen, das Problem zu sehen.
Das Problem ist, dass Du nur ein Array con char hast und dann eben 6 Zeichen einliest. Das würde vermutlich funktionieren, wenn Du immer nur genau die 6 Zeichen hintereinander haben würdest. Du hast aber auch Zeilenumbrüche in der Datei, d.h. Deine Datei enthält:
"513234\n503323\n502231\n612323\n615343" oder - so Du Windows Zeilenumbrüche haben solltest:
"513234\r\n503323\r\n502231\r\n612323\r\n615343"
Daher hast Du dann in der zweiten Reihe in data[0] entweder ein '\r' oder '\n' aber keine 5 oder 6.