OOP Stringerkennung

Xenon

Mitglied
Hallo Forum,

ich habe folgende Situation
1. eine txt Datei besteht immer aus 8 Felder. Die einzelne spalten sind durch ; getrennt
2. Die erste Spalte beinhaltet das Datum die letzte spalte eine zahl
so sieht die Datei aus
Java:
04.01.2011;a;b;c;d;e;f;4;
03.01.2011;a;b;c;d;e;f;214;
03.01.2011;f;g;h;i;j;k;32;
02.01.2011;a;b;c;d;e;f;1;

Nun möchte ich die letzte Spalte am 03.01.2011 ausgeben. Dazu habe ich kurz mal was zusammen getragen.
Bisher schaffe ich nur die Zeilen zu finden in denen die Werte vorkommen.
Java:
import java.io.*;
import java.util.regex.*;
	
public class Main {
	 public static void main(String[] args) {
		    File file = new File("C:\\text.txt");
		    FileInputStream fis = null;
		    BufferedInputStream bis = null;
		    DataInputStream dis = null;

		    try {
		      fis = new FileInputStream(file);

		      // Here BufferedInputStream is added for fast reading.
		      bis = new BufferedInputStream(fis);
		      dis = new DataInputStream(bis);

		      // dis.available() returns 0 if the file does not have more lines.
		      while (dis.available() != 0) {
		    	  
		      // this statement reads the line from the file and print it to
		        // the console.
		        //System.out.println(dis.readLine());
		    	 
		    	if(dis.readLine().startsWith("03.01.2011"))
		    	{
		    		System.out.println("gefunden");
		    	}
		    	    		 
		    		  }
		      
		      // dispose all the resources after using them.
		      fis.close();
		      bis.close();
		      dis.close();

		    } catch (FileNotFoundException e) {
		      e.printStackTrace();
		    } catch (IOException e) {
		      e.printStackTrace();
		    }
		  }
		}
 

Purgator

Aktives Mitglied
Ich habe einen Ausschnitt deines Quelltextes so erweitert, dass er alle Komponenter deiner gewünschten Zeile einzeln ausgibt.
Nutzen tue ich dafür die split()-Methode, welche einen String in ein String-Array zerlegt, indem es den String immer am gegebenen Zeichen trennt.
Da ich den Code nicht getestet habe können kleinere Fehler drin sein.
Java:
		while (dis.available() != 0) {            
              String line = dis.readLine();
              if(line.startsWith("03.01.2011")) {
                  System.out.println("gefunden");
                  String[] components = line.split(";");
                  for(int i=0; i<components.length; i++) {
                	  System.out.println(components[i]);
                  }
              }
                           
		}
 
B

bone2

Gast
du möchtest nur die 214 ausgeben?

Java:
        String tempStr = null;
        if((tempStr = dis.readLine()).startsWith("03.01.2011"))
        {
            System.out.println("gefunden");
            String[] tempArr = tempStr.split(";");
            System.out.println(tempArr[tempArr.length-1]);
        }
 

Neue Themen


Oben