Hey Leute,
ich lerne momentan für eine Klausur und habe mir mal folgende zwei Szenarien gedacht:
1) Ich sol aus einer Text-Datei, die z.B. aus 10 Zeilen besteht und in jeder Zeile eine Zahl steht eine Zahl. Anschließend soll will ich diese Werte dann in eine ArrayList speichern. Mein Code dazu:
So, in meiner Text-File sind die Zahlen 1-10 zeilenweise geschrieben. Wenn ich mir nach dem ganzen die Liste ausgebe, erhalte ich folgende Einträge:
Wie kann das aber sein? Ich habe doch nur 10 Zeilen und die Zahlen 1 - 10 in der File, ich hätte erwartet, dass die ArrayList auch nur diese anzeigt.
2) Ich möchte aus derselben Datei lesen, die zahlen jeweils mit 2 multiplizieren und anschließend in eine andere Datei schreiben. Mein Code:
Das Problem ist, dass ich dann in der Datei "einfuegen.txt" folgenden Eintrag habe:
Wo liegt mein Fehler?
Kann mir jemand mal genau erklären, wie vor allem die while Schleife funktioniert, die werte von c=reader.read() sind doch zufällig oder? Was hat das dann mit dem Zeilenweise auslesen zu tun? Verstehe das Prinzip nicht ganz.
ich lerne momentan für eine Klausur und habe mir mal folgende zwei Szenarien gedacht:
1) Ich sol aus einer Text-Datei, die z.B. aus 10 Zeilen besteht und in jeder Zeile eine Zahl steht eine Zahl. Anschließend soll will ich diese Werte dann in eine ArrayList speichern. Mein Code dazu:
Java:
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CopyFile {
public static void main(String[] args) throws IOException {
FileReader reader = null;
List<Integer> list = new ArrayList<>();
try {
reader = new FileReader("kopiere.txt");
int c;
while ((c = reader.read()) != -1) {
list.add(c);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
System.out.println(list);
}
}
So, in meiner Text-File sind die Zahlen 1-10 zeilenweise geschrieben. Wenn ich mir nach dem ganzen die Liste ausgebe, erhalte ich folgende Einträge:
[49, 13, 10, 50, 13, 10, 51, 13, 10, 52, 13, 10, 53, 13, 10, 54, 13, 10, 55, 13, 10, 56, 13, 10, 57, 13, 10, 49, 48]
Wie kann das aber sein? Ich habe doch nur 10 Zeilen und die Zahlen 1 - 10 in der File, ich hätte erwartet, dass die ArrayList auch nur diese anzeigt.
2) Ich möchte aus derselben Datei lesen, die zahlen jeweils mit 2 multiplizieren und anschließend in eine andere Datei schreiben. Mein Code:
Java:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) throws IOException {
FileReader reader = null;
FileWriter writer = null;
try {
reader = new FileReader("kopiere.txt");
writer = new FileWriter("einfuegen.txt");
int c;
while ((c = reader.read()) != -1) {
int i = Integer.parseInt(String.valueOf(c));
i = i * 2;
writer.write(i);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
if (reader != null) {
reader.close();
}
}
}
}
Das Problem ist, dass ich dann in der Datei "einfuegen.txt" folgenden Eintrag habe:
Das ist ja eigentlich mein Ergebnis, aber nur in Buchstaben (b=2, d=4 etc.)bdfhjlnprb`
Wo liegt mein Fehler?
Kann mir jemand mal genau erklären, wie vor allem die while Schleife funktioniert, die werte von c=reader.read() sind doch zufällig oder? Was hat das dann mit dem Zeilenweise auslesen zu tun? Verstehe das Prinzip nicht ganz.