Datei auslesen und die Daten weiter verarbeiten

wanja26

Mitglied
Hi,

ich bin gerade dabei eine Datei auszulesen, in dieser stehen alle 4 Zeilen bestimmte Werte: Diese kriege ich als String übergeben von einem BufferedReader Objekt. So nun möchte ich die 4 Zeilen in eine Klasse packen die Host heisst und den Konstruktor Host(String,String,File,File) besitzt. Die einzelnen Strings habe ich in eine ArrayList<String> geschrieben. Mein Problem ist nun dass ich je 4 Werte (passend) der Klasse Host übergeben will und die beiden letzten nach File casten muss.

z.B.
host1
123
cert
key
host2
234
cert2
key
...

hier mein Code:

Java:
public void datenLaden() throws FileNotFoundException, IOException {
        String nameAusgabeDatei = "speicher.txt";
        String verzPfad = "...";
        File ausgabeDatei = new File(verzPfad + "/" + nameAusgabeDatei);
        FileReader fr = new FileReader(ausgabeDatei);
        BufferedReader br = new BufferedReader(fr);
        String line;
        ArrayList<String> speicherTest = new ArrayList<String>();
        while ((line = br.readLine()) != null){
                speicherTest.add(line);                               
           System.out.println(line);
        }
        for (String speicher: speicherTest){
            String name,ipAdresse;
            File cert, schluessel;
           // hier komme ich nicht weiter
        }

Danke für eure Hilfe im voraus!
 
Die beiden Strings name und ipAdresse hast du ja schon im korrekten Format, also als String.
Strings nach File casten geht nicht. Evtl willst du ein neues File erstellen?
Code:
new File(cert)

Falls das nicht hilft, verstehe ich die Frage nicht oder nicht ganz ;-)
 
Hi,

habs jetzt so gelöst, wenn jemand einen eleganteren Weg kennt oder noch etwas zu bemängeln hat nur raus damit.

Java:
  public void datenLaden() throws FileNotFoundException, IOException {
        String nameAusgabeDatei = "speicher.txt";
        String verzPfad = "/xx/erstellte_Konf_Dateien/";
        File ausgabeDatei = new File(verzPfad + "/" + nameAusgabeDatei);
        FileReader fr = new FileReader(ausgabeDatei);
        BufferedReader br = new BufferedReader(fr);
        String line;
        int zeilen=0;
        ArrayList<String> speicherTest = new ArrayList<String>();
        ArrayList<String> vergleich = new ArrayList<String>();
        while ((line = br.readLine()) != null){
                speicherTest.add(line);
        }
        for (String speicher: speicherTest){


            if (zeilen != 4) {
                vergleich.add(speicher);
                zeilen++;
                if (zeilen == 4) {
                    zeilen = 0;
                    selektierteDatei = new File(vergleich.get(2));
                    selektierteSchluessel = new File(vergleich.get(3));
                    host = new Host(vergleich.get(0), vergleich.get(1), selektierteDatei, selektierteSchluessel);
                    hostSpeicher.add(host);
                    model.addElement(host.getName());
                    vergleich.clear();
                }
            }           
        }
    }
 
Normalerweise wird sowas mit dem modulo Operator gemacht:
Java:
for (String speicher: speicherTest){

if(zeilen % 4 == 0){
selektierteDatei = new File(vergleich.get(2));
	selektierteSchluessel = new File(vergleich.get(3));
	host = new Host(vergleich.get(0), vergleich.get(1), selektierteDatei, selektierteSchluessel);
	hostSpeicher.add(host);
	model.addElement(host.getName());
	vergleich.clear();
} else {
   vergleich.add(speicher);
}
zeilen++;
 

Zurück
Oben