Hallo liebes Java Forum, ich habe eine Frage zum Thema Files auslesen. Ich habe ein kleines Programm geschrieben, dass zwei verschiedene Files auslesen soll. Die erste File sieht etwa so aus:
Zeit : ID:
23,35456 257
33,45656 345
...
Zeit und ID sollen ausgelesen und zugeordnet werden und die ID einmal als hex und einmal als Dezimalzahl ausgegeben werden. Dieser Teil funktioniert soweit. ein zweites File "Text2" soll ausgelesen werden. Ich habe hierfür eine Methode "liefereNachrichten" geschrieben, die die ID der ersten Methode überliefert bekommt. Die zweite File sieht in etwa so aus:
Botschaftsnummer 245
Nachricht: Hürdenlauf //hier steht weiterer Text der nicht relevant ist
Nachricht: Hochsprung
Nachricht: ...
Botschaftsnummer 344
Nachricht: ...
Nachricht: ...
wenn die Botschaftsnummer mit der übergebenen id übereinstimmt soll jeweils das zweite Wort hinter Nachricht zurückgeliefert werden, bis die nächste Botschaft kommt. Die Nachrichten des zweiten Files sollen der ID des ersten Files zugeordnet werden.
Hier mal mein Versuch soweit:
Ich bin für Verbesserungsvorschläge dankbar.
Zeit : ID:
23,35456 257
33,45656 345
...
Zeit und ID sollen ausgelesen und zugeordnet werden und die ID einmal als hex und einmal als Dezimalzahl ausgegeben werden. Dieser Teil funktioniert soweit. ein zweites File "Text2" soll ausgelesen werden. Ich habe hierfür eine Methode "liefereNachrichten" geschrieben, die die ID der ersten Methode überliefert bekommt. Die zweite File sieht in etwa so aus:
Botschaftsnummer 245
Nachricht: Hürdenlauf //hier steht weiterer Text der nicht relevant ist
Nachricht: Hochsprung
Nachricht: ...
Botschaftsnummer 344
Nachricht: ...
Nachricht: ...
wenn die Botschaftsnummer mit der übergebenen id übereinstimmt soll jeweils das zweite Wort hinter Nachricht zurückgeliefert werden, bis die nächste Botschaft kommt. Die Nachrichten des zweiten Files sollen der ID des ersten Files zugeordnet werden.
Hier mal mein Versuch soweit:
Java:
package JavaFilesforStarters;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class JavaFileReader
{
public static void main(String[] args) {
String line;
try {
BufferedReader br;
FileReader fr = new FileReader ("E:/EinText.txt"); //Zugriff auf das File EinText
br = new BufferedReader (fr);
while ((line = br.readLine()) != null )
{
if (!line.contains("Zeit")) //erste Zeile soll weggelassen werden
{
String sZeit;
String sID;
StringTokenizer st = new StringTokenizer(line);
sZeit = st.nextToken();
sID = st.nextToken();
int iZahl = Integer.parseInt(sID, 16); //parst die Hexstringzahl in eine Dezimalzahl
System.out.println("Nachricht: " +sID+ " Dezimal: "+iZahl+ " Gesendet: " +sZeit);
System.out.println();
System.out.println("Inhalt: " +liefereNachrichten(sID)); //Hexstringzahl wird übergeben
System.out.println();
}
}
//br.close(); Close hier richtig?
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static String liefereNachrichten (String sID)
{
String line2="";
try
{
BufferedReader br2;
FileReader fr = new FileReader ("E:/EinText2.txt");
br2 = new BufferedReader (fr);
while ((line2 = br2.readLine()) != null)
{
if(line2.contains("Botschaft")) //Wenn line2 das Wort Botschaft enthält soll
{ //in den Folgezeilen das zweite Wort zurückgeliefert
//werden
StringTokenizer st = new StringTokenizer (line2);
String ID = st.nextToken();
ID = st.nextToken(); //ID wird zweites Wort zugewiesen daher 2 mal next Token
if (sID.equals(ID)) //Wenn die übergebene sID mit der ID übereinstimmt
{
line2 = br2.readLine();
line2 = br2.readLine(); //die übernächste Zeile soll ausgelesen werden
//jeweils das zweite Wort soll ausgelesen werden bis wieder eine Zeile kommt, die mit "Botschaft" beginnt
}
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return (line2); //hier gibt line2 nur "null" zurück, da der Inhalt von line2 in der Schleife hier nicht mehr gilt,
//wenn ich das return aber in die while Schleife verschiebe, bringt die Methode einen Fehler
} //man müsse ein "Return Statement" adden.
}
Ich bin für Verbesserungsvorschläge dankbar.